예제 #1
0
def test_get_answer():
    earley = Earley('a')
    earley.rules_list = [Rule('U', 'S'), Rule('S', 'a')]
    assert earley.get_answer()

    earley = Earley('ab')
    earley.rules_list = [Rule('U', 'S'), Rule('S', 'aA'), Rule('A', 'b')]
    assert earley.get_answer()

    earley = Earley('ac')
    earley.rules_list = [Rule('U', 'S'), Rule('S', 'aA'), Rule('A', 'b')]
    assert not earley.get_answer()
예제 #2
0
def test_predict():
    earley = Earley('a')
    earley.rules_list = [Rule('U', 'S'), Rule('S', 'a')]
    earley.predict(0)

    is_added = False
    to_add = Situation('S', 'a', 0, 0)
    for sit in earley.situations_dict[0]:
        if sit == to_add:
            is_added = True
            break

    assert is_added
예제 #3
0
def test_scan():
    earley = Earley('a')
    earley.rules_list = [Rule('U', 'S'), Rule('S', 'a')]
    earley.situations_dict[0].add(Situation('S', 'a', 0, 0))
    earley.scan(0, 'a')

    is_added = False
    to_add = Situation('S', 'a', 0, 1)
    for sit in earley.situations_dict[1]:
        if sit == to_add:
            is_added = True
            break

    assert is_added