blob: d4ea6033f2b6a2f322a1bc7d935e1d4298246da8 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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;
}
}
|