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 * @param */ public class NonDeterminismCheckingSUL implements SUL { private final SUL sul; private final ObservationTree root = new ObservationTree(); private final List inputs = new ArrayList<>(); private final List outputs = new ArrayList<>(); public NonDeterminismCheckingSUL(SUL 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; } }