package pl.edu.amu.wmi.daut.base;
import junit.framework.TestCase;
/**
* @author cole1911
* Test klasy EpsilonUtilities.
*/
public class TestEpsilonUtilities extends TestCase {
/**
* Automat bez epsilon przejsc.
*/
public final void testEpsilonUtilitiesNoEpsilon() {
AutomatonSpecification test = new NaiveAutomatonSpecification();
State koniec = test.addState();
State pierwszy = test.addState();
State drugi = test.addState();
State trzeci = test.addState();
test.markAsInitial(pierwszy);
test.markAsFinal(drugi);
test.addTransition(pierwszy, koniec, new AnyTransitionLabel());
test.addTransition(drugi, koniec, new CharTransitionLabel('a'));
test.addTransition(trzeci, koniec, new EmptyTransitionLabel());
assertFalse(EpsilonUtilities.isEpsilonTransition(test));
}
/**
* Automat z epsilon przejsciem.
*/
public final void testEpsilonUtilitiesSimpleAutomatonWithEpsilon() {
AutomatonSpecification test2 = new NaiveAutomatonSpecification();
State koniec2 = test2.addState();
State pierwszy2 = test2.addState();
State drugi2 = test2.addState();
test2.markAsInitial(pierwszy2);
test2.markAsFinal(drugi2);
test2.addTransition(pierwszy2, koniec2, new EpsilonTransitionLabel());
test2.addTransition(drugi2, koniec2, new EpsilonTransitionLabel());
assertTrue(EpsilonUtilities.isEpsilonTransition(test2));
}
/**
* Pusty automat.
*/
public final void testEpsilonUtilitiesEmptyAutomaton() {
AutomatonSpecification test4 = new NaiveAutomatonSpecification();
assertFalse(EpsilonUtilities.isEpsilonTransition(test4));
}
/**
* Automat z pustym przejsciem.
*/
public final void testEpsiloUtilitiesWithEmptyTransition() {
AutomatonSpecification test3 = new NaiveAutomatonSpecification();
State pierwszy3 = test3.addState();
State drugi3 = test3.addState();
test3.markAsInitial(pierwszy3);
test3.markAsFinal(drugi3);
test3.addTransition(pierwszy3, drugi3, new EmptyTransitionLabel());
assertFalse(EpsilonUtilities.isEpsilonTransition(test3));
}
/**
* Automat z dwoma epsilonami.
*/
public final void testEpsilonUtilitiesSimpleAutomatonWithTwoEpsilons() {
AutomatonSpecification test5 = new NaiveAutomatonSpecification();
State pierwszy5 = test5.addState();
State drugi5 = test5.addState();
State trzeci5 = test5.addState();
State czwarty5 = test5.addState();
State piaty5 = test5.addState();
test5.markAsInitial(pierwszy5);
test5.markAsFinal(trzeci5);
test5.addTransition(pierwszy5, drugi5, new CharTransitionLabel('a'));
test5.addTransition(drugi5, trzeci5, new AnyTransitionLabel());
test5.addTransition(trzeci5, czwarty5, new EpsilonTransitionLabel());
test5.addTransition(czwarty5, piaty5, new EmptyTransitionLabel());
test5.addTransition(piaty5, trzeci5, new EpsilonTransitionLabel());
assertTrue(EpsilonUtilities.isEpsilonTransition(test5));
}
}