package pl.edu.amu.wmi.daut.base; import junit.framework.TestCase; /** * test metody FirstAcceptedWord. */ public class TestFirstAcceptedWord extends TestCase { /** * automatPusty. */ public final void testFirstAcceptedWordEmpty() { AutomatonSpecification a = new NaiveAutomatonSpecification(); State s0 = a.addState(); a.markAsInitial(s0); a.markAsFinal(s0); assertEquals(a.firstAcceptedWord(""), ""); } /** * automatA. Nie pusty ale akceptuje slowo puste. */ public final void testFirstAcceptedWordA() { AutomatonSpecification a = new NaiveAutomatonSpecification(); State s0 = a.addState(); State s1 = a.addState(); State s2 = a.addState(); a.markAsInitial(s0); a.markAsFinal(s0); a.markAsFinal(s1); a.markAsFinal(s2); a.addTransition(s0, s1, new CharTransitionLabel('a')); a.addTransition(s0, s2, new CharTransitionLabel('b')); a.addTransition(s1, s2, new CharTransitionLabel('a')); a.addTransition(s1, s0, new CharTransitionLabel('b')); a.addTransition(s2, s1, new CharTransitionLabel('b')); a.addTransition(s2, s0, new CharTransitionLabel('a')); assertEquals(a.firstAcceptedWord("ab"), ""); } /** * automatB. nic ciekawego. */ public final void testFirstAcceptedWordB() { AutomatonSpecification a = new NaiveAutomatonSpecification(); State s0 = a.addState(); State s1 = a.addState(); State s2 = a.addState(); State s3 = a.addState(); State s4 = a.addState(); State s5 = a.addState(); State s6 = a.addState(); a.markAsInitial(s0); a.markAsFinal(s6); a.addTransition(s0, s2, new CharTransitionLabel('a')); a.addTransition(s2, s3, new CharTransitionLabel('a')); a.addTransition(s3, s4, new CharTransitionLabel('a')); a.addTransition(s4, s5, new CharTransitionLabel('a')); a.addTransition(s5, s6, new CharTransitionLabel('a')); a.addTransition(s0, s1, new CharTransitionLabel('b')); assertEquals(a.firstAcceptedWord("ab"), "aaaaa"); } /** * automatC. nie ma pierwszego slowa. */ public final void testFirstAcceptedWordC() { AutomatonSpecification a = new NaiveAutomatonSpecification(); State s0 = a.addState(); State s1 = a.addState(); State s2 = a.addState(); State s3 = a.addState(); a.markAsInitial(s0); a.markAsFinal(s1); a.addTransition(s0, s1, new CharTransitionLabel('c')); a.addTransition(s0, s3, new CharTransitionLabel('a')); a.addTransition(s2, s1, new CharTransitionLabel('c')); a.addTransition(s2, s3, new CharTransitionLabel('a')); a.addTransition(s3, s0, new CharTransitionLabel('b')); a.addTransition(s3, s2, new CharTransitionLabel('a')); a.addTransition(s1, s0, new CharTransitionLabel('a')); a.addTransition(s1, s2, new CharTransitionLabel('a')); assertEquals(a.firstAcceptedWord("abc"), "c"); } /** * automatD. jezyk akceptowany przezen jest nieskonczony */ public final void testFirstAcceptedWordD() { AutomatonSpecification a = new NaiveAutomatonSpecification(); State s0 = a.addState(); State s1 = a.addState(); State s2 = a.addState(); State s3 = a.addState(); a.markAsInitial(s0); a.markAsFinal(s1); a.addTransition(s0, s1, new CharTransitionLabel('b')); a.addTransition(s0, s3, new CharTransitionLabel('a')); a.addTransition(s2, s1, new CharTransitionLabel('a')); a.addTransition(s2, s3, new CharTransitionLabel('b')); a.addTransition(s3, s0, new CharTransitionLabel('b')); a.addTransition(s3, s2, new CharTransitionLabel('a')); a.addTransition(s1, s0, new CharTransitionLabel('b')); a.addTransition(s1, s2, new CharTransitionLabel('b')); assertEquals(a.firstAcceptedWord("ba"), "b"); } /** * automatE. "Tasiemiec". */ public final void testFirstAcceptedWordE() { AutomatonSpecification a = new NaiveAutomatonSpecification(); State s0 = a.addState(); State s1 = a.addState(); State s2 = a.addState(); State s3 = a.addState(); State s4 = a.addState(); State s5 = a.addState(); State s6 = a.addState(); a.markAsInitial(s0); a.markAsFinal(s6); a.addTransition(s0, s1, new CharTransitionLabel('s')); a.addTransition(s0, s2, new CharTransitionLabel('d')); a.addTransition(s1, s2, new CharTransitionLabel('f')); a.addTransition(s1, s3, new CharTransitionLabel('g')); a.addTransition(s2, s3, new CharTransitionLabel('s')); a.addTransition(s2, s4, new CharTransitionLabel('c')); a.addTransition(s3, s4, new CharTransitionLabel('z')); a.addTransition(s3, s5, new CharTransitionLabel('b')); a.addTransition(s4, s5, new CharTransitionLabel('f')); a.addTransition(s4, s6, new CharTransitionLabel('v')); a.addTransition(s5, s6, new CharTransitionLabel('k')); assertEquals(a.firstAcceptedWord("sdfgczbvk"), "dcv"); } /** * automatF. tez nieskonczony. */ public final void testFirstAcceptedWordF() { AutomatonSpecification a = new NaiveAutomatonSpecification(); State s0 = a.addState(); State s1 = a.addState(); State s2 = a.addState(); State s3 = a.addState(); State s4 = a.addState(); State s5 = a.addState(); State s6 = a.addState(); a.markAsInitial(s0); a.markAsFinal(s6); a.addTransition(s0, s1, new CharTransitionLabel('s')); a.addTransition(s1, s0, new CharTransitionLabel('s')); a.addTransition(s0, s2, new CharTransitionLabel('d')); a.addTransition(s1, s2, new CharTransitionLabel('f')); a.addTransition(s1, s3, new CharTransitionLabel('g')); a.addTransition(s2, s3, new CharTransitionLabel('s')); a.addTransition(s2, s4, new CharTransitionLabel('c')); a.addTransition(s3, s4, new CharTransitionLabel('z')); a.addTransition(s3, s5, new CharTransitionLabel('b')); a.addTransition(s4, s5, new CharTransitionLabel('f')); a.addTransition(s4, s6, new CharTransitionLabel('v')); a.addTransition(s5, s6, new CharTransitionLabel('k')); assertEquals(a.firstAcceptedWord("sdfgczbvk"), "dcv"); } }