diff options
author | René den Hertog | 2017-10-26 17:34:51 +0200 |
---|---|---|
committer | René den Hertog | 2017-10-26 17:34:51 +0200 |
commit | ac914c719d401c44cb2633127952b022bf563ff3 (patch) | |
tree | f7d2399b2ab6cddb86aa996096581a397ff407b9 /assignments/assignment2/Bounded Retransmission Protocol Tester/Source/basiclearner/NonDeterminismCheckingSUL.java | |
parent | Finish assignment 2, part 1 (diff) |
'Bounded Retransmission Protocol' Blob
Diffstat (limited to 'assignments/assignment2/Bounded Retransmission Protocol Tester/Source/basiclearner/NonDeterminismCheckingSUL.java')
-rw-r--r-- | assignments/assignment2/Bounded Retransmission Protocol Tester/Source/basiclearner/NonDeterminismCheckingSUL.java | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/assignments/assignment2/Bounded Retransmission Protocol Tester/Source/basiclearner/NonDeterminismCheckingSUL.java b/assignments/assignment2/Bounded Retransmission Protocol Tester/Source/basiclearner/NonDeterminismCheckingSUL.java new file mode 100644 index 0000000..d4ea603 --- /dev/null +++ b/assignments/assignment2/Bounded Retransmission Protocol Tester/Source/basiclearner/NonDeterminismCheckingSUL.java @@ -0,0 +1,48 @@ +package basiclearner; + +import java.util.ArrayList; +import java.util.List; + +import de.learnlib.api.SUL; +import de.learnlib.api.SULException; + +/** + * SUL-wrapper to check for non-determinism, by use of an observation tree. + * + * @author Ramon Janssen + * + * @param <I> + * @param <O> + */ +public class NonDeterminismCheckingSUL<I,O> implements SUL<I,O> { + private final SUL<I,O> sul; + private final ObservationTree<I,O> root = new ObservationTree<I,O>(); + private final List<I> inputs = new ArrayList<>(); + private final List<O> outputs = new ArrayList<>(); + + public NonDeterminismCheckingSUL(SUL<I,O> sul) { + this.sul = sul; + } + + @Override + public void post() { + sul.post(); + // check for non-determinism: crashes if outputs are inconsistent with previous ones + root.addObservation(inputs, outputs); + inputs.clear(); + outputs.clear(); + } + + @Override + public void pre() { + sul.pre(); + } + + @Override + public O step(I input) throws SULException { + O result = sul.step(input); + inputs.add(input); + outputs.add(result); + return result; + } +} |