/*
  * example from "An optimization technique for protocole conformance test
  * generation based on UIO sequences and rural chinese postman tour", Aho,
  * Dahbura, Lee and Uyar, 1991
  */
 public void testUIO2() throws NoSuchStateException, TransductionException {
   DeterministicTransducer t = new DeterministicTransducer();
   State[] ss = new State[5];
   for (int i = 0; i < 5; i++) ss[i] = t.addState(i == 0 ? true : false, true);
   t.addTransition(new Transition(ss[0], new TransducerRelation("a", "x"), ss[0]));
   t.addTransition(new Transition(ss[0], new TransducerRelation("b", "x"), ss[1]));
   t.addTransition(new Transition(ss[0], new TransducerRelation("c", "y"), ss[3]));
   t.addTransition(new Transition(ss[1], new TransducerRelation("b", "y"), ss[2]));
   t.addTransition(new Transition(ss[1], new TransducerRelation("a", "x"), ss[4]));
   t.addTransition(new Transition(ss[2], new TransducerRelation("b", "x"), ss[4]));
   t.addTransition(new Transition(ss[2], new TransducerRelation("c", "y"), ss[4]));
   t.addTransition(new Transition(ss[3], new TransducerRelation("b", "x"), ss[2]));
   t.addTransition(new Transition(ss[3], new TransducerRelation("a", "x"), ss[4]));
   t.addTransition(new Transition(ss[4], new TransducerRelation("a", "z"), ss[3]));
   t.addTransition(new Transition(ss[4], new TransducerRelation("c", "z"), ss[0]));
   Map m = t.makeUIOSet();
   assertTrue(t.verifyUIO(m));
 }
 /*
  * example from <p> " <em> Formal Methods for protocol testing </em> ",
  * Sidhu and Leung, IEEE TSE 15(4) 1989
  *
  */
 public void testW2() throws NoSuchStateException, TransductionException {
   DeterministicTransducer t = new DeterministicTransducer();
   State[] ss = new State[5];
   for (int i = 0; i < 5; i++) ss[i] = t.addState(i == 0 ? true : false, true);
   t.addTransition(new Transition(ss[0], new TransducerRelation("b", null), ss[0]));
   t.addTransition(new Transition(ss[0], new TransducerRelation("a", "x"), ss[3]));
   t.addTransition(new Transition(ss[1], new TransducerRelation("b", "y"), ss[2]));
   t.addTransition(new Transition(ss[1], new TransducerRelation("a", "y"), ss[4]));
   t.addTransition(new Transition(ss[2], new TransducerRelation("b", "x"), ss[3]));
   t.addTransition(new Transition(ss[2], new TransducerRelation("a", "x"), ss[1]));
   t.addTransition(new Transition(ss[3], new TransducerRelation("b", "y"), ss[3]));
   t.addTransition(new Transition(ss[3], new TransducerRelation("a", "x"), ss[4]));
   t.addTransition(new Transition(ss[4], new TransducerRelation("b", "y"), ss[0]));
   t.addTransition(new Transition(ss[4], new TransducerRelation("a", "y"), ss[2]));
   Set s = t.makeCharacterizingSet();
   System.err.println("W Set " + s);
   /* verify W */
   assertTrue(t.verifyW(s));
 }
 /*
  * example from "A new technique for generating protocol tests", Sabnani and
  * Dahbura, 1985
  */
 public void testUIO() throws NoSuchStateException, TransductionException {
   DeterministicTransducer t = new DeterministicTransducer();
   State[] ss = new State[7];
   ss[0] = t.addState(true, false);
   for (int i = 1; i < 7; i++) ss[i] = t.addState(false, true);
   t.addTransition(new Transition(ss[0], new TransducerRelation("a", "b"), ss[1]));
   t.addTransition(new Transition(ss[1], new TransducerRelation("c", "d"), ss[2]));
   t.addTransition(new Transition(ss[2], new TransducerRelation("z", "b"), ss[4]));
   t.addTransition(new Transition(ss[4], new TransducerRelation("a", "b"), ss[0]));
   t.addTransition(new Transition(ss[1], new TransducerRelation("a", "f"), ss[3]));
   t.addTransition(new Transition(ss[3], new TransducerRelation("z", "b"), ss[5]));
   t.addTransition(new Transition(ss[5], new TransducerRelation("x", "d"), ss[6]));
   t.addTransition(new Transition(ss[6], new TransducerRelation("a", "f"), ss[1]));
   Map m = t.makeUIOSet();
   System.err.println("UIO Set " + m);
   assertTrue(t.verifyUIO(m));
 }