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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
|
package org.biojava.utils.automata;
import junit.framework.TestCase;
import org.biojava.bio.seq.DNATools;
public class NfaTest
extends TestCase
{
private static Nfa nfa;
private Nfa.Node nT1LB;
private Nfa.Node nT1preC;
private Nfa.Node nT1postC;
private Nfa.Node nT1preT;
private Nfa.Node nT1postT;
private Nfa.Node nT1RB;
private Nfa.Node nT2LB;
private Nfa.Node nT2preC1;
private Nfa.Node nT2postC1;
private Nfa.Node nT2preT1;
private Nfa.Node nT2postT1;
private Nfa.Node nT2preT2;
private Nfa.Node nT2postT2;
private Nfa.Node nT2preC2;
private Nfa.Node nT2postC2;
private Nfa.Node nT2preC3;
private Nfa.Node nT2postC3;
private Nfa.Node nT2preT3;
private Nfa.Node nT2postT3;
private Nfa.Node nT2RB;
/**
* Create the Nfa corresponding
* to (c|t)*(ctt|c+t).
*/
protected void setUp()
{
nfa = new Nfa("test Nfa", DNATools.getDNA());
// (c|t)*
nT1LB = nfa.addNode(false);
nT1preC = nfa.addNode(false);
nT1postC = nfa.addNode(false);
nT1preT = nfa.addNode(false);
nT1postT = nfa.addNode(false);
nT1RB = nfa.addNode(false);
nfa.addEpsilonTransition(nfa.getStart(), nT1LB);
nfa.addEpsilonTransition(nT1LB, nT1preC);
nfa.addEpsilonTransition(nT1LB, nT1preT);
nfa.addTransition(nT1preC, nT1postC, DNATools.c());
nfa.addTransition(nT1preT, nT1postT, DNATools.t());
nfa.addEpsilonTransition(nT1postC, nT1RB);
nfa.addEpsilonTransition(nT1postT, nT1RB);
nfa.addEpsilonTransition(nfa.getStart(), nT1RB);
nfa.addEpsilonTransition(nT1RB, nT1LB);
// (ctt|c+t)
nT2LB = nfa.addNode(false);
nT2preC1 = nfa.addNode(false);
nT2postC1 = nfa.addNode(false);
nT2preT1 = nfa.addNode(false);
nT2postT1 = nfa.addNode(false);
nT2preT2 = nfa.addNode(false);
nT2postT2 = nfa.addNode(false);
nT2preC2 = nfa.addNode(false);
nT2postC2 = nfa.addNode(false);
nT2preC3 = nfa.addNode(false);
nT2postC3 = nfa.addNode(false);
nT2preT3 = nfa.addNode(false);
nT2postT3 = nfa.addNode(false);
nT2RB = nfa.addNode(false);
nfa.addEpsilonTransition(nT1RB, nT2LB);
nfa.addEpsilonTransition(nT2LB, nT2preC1);
nfa.addTransition(nT2preC1, nT2postC1, DNATools.c());
nfa.addEpsilonTransition(nT2postC1, nT2preT1);
nfa.addTransition(nT2preT1, nT2postT1, DNATools.t());
nfa.addEpsilonTransition(nT2postT1, nT2preT2);
nfa.addTransition(nT2preT2, nT2postT2, DNATools.t());
nfa.addEpsilonTransition(nT2postT2, nT2RB);
nfa.addEpsilonTransition(nT2LB, nT2preC2);
nfa.addTransition(nT2preC2, nT2postC2, DNATools.c());
nfa.addEpsilonTransition(nT2postC2, nT2preC3);
nfa.addTransition(nT2preC3, nT2postC3, DNATools.c());
nfa.addEpsilonTransition(nT2postC3, nT2preC3);
nfa.addEpsilonTransition(nT2postC3, nT2preT3);
nfa.addTransition(nT2preT3, nT2postT3, DNATools.t());
nfa.addEpsilonTransition(nT2postT3, nT2RB);
nfa.addEpsilonTransition(nT2RB, nfa.getEnd());
}
/**
* Test Nfa class by creating the Nfa corresponding
* to (c|t)*(ctt|c+t).
*/
public void testNfa()
{
// System.out.println(nfa.toString());
nfa.doEpsilonClosure();
// System.out.println(nfa.toString());
}
}
|