package pl.edu.amu.wmi.daut.re; import pl.edu.amu.wmi.daut.base.AutomatonSpecification; import pl.edu.amu.wmi.daut.base.NaiveAutomatonSpecification; import pl.edu.amu.wmi.daut.base.State; import pl.edu.amu.wmi.daut.base.CharTransitionLabel; import pl.edu.amu.wmi.daut.base.NondeterministicAutomatonByThompsonApproach; import pl.edu.amu.wmi.daut.re.OptionalityOperator.Factory; import java.util.ArrayList; import junit.framework.TestCase; /** * * Test klasy OptionalityOperator. */ public class TestOptionalityOperator extends TestCase { /** * Test metody createAutomatonFromOneAutomaton. */ public final void testCreateAutomatonFromOneAutomaton() { AutomatonSpecification automaton = new NaiveAutomatonSpecification(); State q0 = automaton.addState(); State q1 = automaton.addState(); State q2 = automaton.addState(); automaton.addTransition(q0, q1, new CharTransitionLabel('a')); automaton.addTransition(q1, q2, new CharTransitionLabel('b')); automaton.addLoop(q1, new CharTransitionLabel('a')); automaton.addLoop(q2, new CharTransitionLabel('b')); automaton.markAsInitial(q0); automaton.markAsFinal(q2); OptionalityOperator operator = new OptionalityOperator(); NondeterministicAutomatonByThompsonApproach result = new NondeterministicAutomatonByThompsonApproach( operator.createAutomatonFromOneAutomaton(automaton)); assertTrue(result.accepts("aaabbb")); assertTrue(result.accepts("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbb")); assertTrue(result.accepts("aabbbbbbbbbbbbb")); assertTrue(result.accepts("ab")); assertTrue(automaton.acceptEmptyWord()); assertFalse(result.accepts("aaabbbbaabbbbab")); assertFalse(result.accepts("aaaaaaaaaaa")); assertFalse(result.accepts("cojapacze")); assertFalse(result.accepts("macrimnatueshzanc")); assertFalse(result.accepts("katrayzniaedc")); assertFalse(result.accepts("jestemglupimstringieminicnieznacze")); assertFalse(result.accepts("jestemautomateminieakceptuje")); } /** * Test fabryki. */ public final void testFactory() { Factory factory = new Factory(); ArrayList<String> params = new ArrayList<String>(); assertEquals(factory.createOperator(params).getClass(), new OptionalityOperator().getClass()); } }