def test_optional(): n = fsa.concat_nfa(fsa.basic_nfa("a"), fsa.optional_nfa(fsa.basic_nfa("b"))) assert n.accept("a") assert n.accept("ab") assert not n.accept("") assert not n.accept("b") assert not n.accept("ba") assert not n.accept("bab")
def test_concat(): n = fsa.concat_nfa(fsa.basic_nfa("a"), fsa.basic_nfa("b")) assert not n.accept("") assert not n.accept("a") assert not n.accept("aa") assert not n.accept("b") assert not n.accept("bb") assert not n.accept("ba") assert not n.accept("abc") assert n.accept("ab")
def test_choice(): n = fsa.choice_nfa(fsa.basic_nfa("a"), fsa.choice_nfa(fsa.basic_nfa("b"), fsa.basic_nfa("c"))) assert not n.accept("") assert n.accept("a") assert n.accept("b") assert n.accept("c") assert not n.accept("d") assert not n.accept("aa") assert not n.accept("ab") assert not n.accept("abc")
def test_reverse_nfa(): n = fsa.concat_nfa(fsa.basic_nfa("a"), fsa.basic_nfa("b")) r = fsa.reverse_nfa(n) assert not r.accept("") assert not r.accept("a") assert not r.accept("aa") assert not r.accept("b") assert not r.accept("bb") assert not r.accept("ab") assert not r.accept("abc") assert r.accept("ba")
def test_star(): n = fsa.star_nfa(fsa.basic_nfa("a")) assert n.accept("") assert n.accept("a") assert n.accept("aaaaaa") assert not n.accept("b") assert not n.accept("ab")
def test_regular(): ex = fsa.star_nfa(fsa.choice_nfa(fsa.basic_nfa("a"), fsa.basic_nfa("b"))) assert ex.accept("") assert ex.accept("a") assert ex.accept("aaaa") assert ex.accept("b") assert ex.accept("bbbb") assert ex.accept("abab") assert ex.accept("babb") ex = fsa.concat_nfa( fsa.basic_nfa("a"), fsa.concat_nfa(fsa.optional_nfa(fsa.basic_nfa("b")), fsa.basic_nfa("c"))) assert ex.accept("ac") assert ex.accept("abc") assert not ex.accept("ab") assert not ex.accept("bc")
def test_regular(): ex = fsa.star_nfa(fsa.choice_nfa(fsa.basic_nfa("a"), fsa.basic_nfa("b"))) assert ex.accept("") assert ex.accept("a") assert ex.accept("aaaa") assert ex.accept("b") assert ex.accept("bbbb") assert ex.accept("abab") assert ex.accept("babb") ex = fsa.concat_nfa( fsa.basic_nfa("a"), fsa.concat_nfa( fsa.optional_nfa(fsa.basic_nfa("b")), fsa.basic_nfa("c") ) ) assert ex.accept("ac") assert ex.accept("abc") assert not ex.accept("ab") assert not ex.accept("bc")
def test_basics(): n = fsa.epsilon_nfa() assert n.accept("") assert not n.accept("a") n = fsa.basic_nfa("a") assert not n.accept("") assert n.accept("a") assert not n.accept("b") n = fsa.dot_nfa() assert not n.accept("") assert n.accept("a") assert n.accept("b")