예제 #1
0
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")
예제 #2
0
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")
예제 #3
0
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")
예제 #4
0
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")
예제 #5
0
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")
예제 #6
0
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")
예제 #7
0
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")
예제 #8
0
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")
예제 #9
0
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")
예제 #10
0
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")
예제 #11
0
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")
예제 #12
0
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")
예제 #13
0
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")
예제 #14
0
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")