Ejemplo n.º 1
0
def test_Term():
    q = Term(docstring='hi')
    assert q.docstring == 'hi'

    r = Regex('r*')
    s = String('s')
    t = TypeIdentifier('t')
    a = AVM()
    cl = ConsList()
    dl = DiffList()
    c = Coreference(None)
    assert isinstance(r, Term)
    assert isinstance(s, Term)
    assert isinstance(t, Term)
    assert isinstance(a, Term)
    assert isinstance(cl, Term)
    assert isinstance(dl, Term)
    assert isinstance(c, Term)
    assert isinstance(r & s, Conjunction)
    assert (r & s).terms == [r, s]
    assert isinstance(s & t, Conjunction)
    assert isinstance(t & a, Conjunction)
    assert isinstance(a & cl, Conjunction)
    assert isinstance(cl & dl, Conjunction)
    assert isinstance(dl & c, Conjunction)
    assert isinstance(c & r, Conjunction)
    assert isinstance((r & s) & t, Conjunction)
    assert ((r & s) & t).terms == [r, s, t]
    assert isinstance(r & (s & t), Conjunction)
    assert (r & (s & t)).terms == [r, s, t]
Ejemplo n.º 2
0
def test_format_lists():
    assert tdl.format(ConsList()) == '< ... >'
    assert tdl.format(ConsList(end=tdl.EMPTY_LIST_TYPE)) == '< >'
    assert tdl.format(ConsList([String('a')])) == '< "a", ... >'
    assert tdl.format(ConsList([String('a')],
                               end=Coreference('b'))) == '< "a" . #b >'

    assert tdl.format(DiffList()) == '<! !>'
    assert tdl.format(DiffList([String('a')])) == '<! "a" !>'
    assert tdl.format(DiffList([String('a'), String('b')])) == '<! "a", "b" !>'
Ejemplo n.º 3
0
def test_format_docstring_terms():
    assert tdl.format(TypeIdentifier('a',
                                     docstring='doc')) == '"""\ndoc\n"""\na'
    assert tdl.format(String('a', docstring='doc')) == '"""\ndoc\n"""\n"a"'
    assert tdl.format(Regex('a', docstring='doc')) == '"""\ndoc\n"""\n^a$'
    assert tdl.format(Coreference('a', docstring='doc')) == '"""\ndoc\n"""\n#a'
    assert tdl.format(AVM(docstring='doc')) == '"""\ndoc\n"""\n[ ]'
    assert tdl.format(ConsList(docstring='doc')) == '"""\ndoc\n"""\n< ... >'
    assert tdl.format(DiffList(docstring='doc')) == '"""\ndoc\n"""\n<! !>'
    # escape docstrings if necessary
    assert tdl.format(
        TypeIdentifier('a', docstring='"one" ""two"" """three""" """"""""')
    ) == '"""\n"one" ""two"" ""\\"three""\\" ""\\"""\\"""\n"""\na'
Ejemplo n.º 4
0
def test_ConsList():
    c = ConsList()
    assert len(c) == 0
    assert c.terminated is False
    assert c.features() == []
    c.terminate(tdl.EMPTY_LIST_TYPE)
    assert c.terminated is True
    assert c.features() == []

    c = ConsList([TypeIdentifier('a')])
    assert len(c) == 1
    assert c['FIRST'] is not None
    assert c['REST'] == AVM()
    c.append(TypeIdentifier('b'))
    assert len(c) == 2
    assert c['REST.FIRST'] is not None
    assert c['REST.REST'] == AVM()
    c.terminate(tdl.EMPTY_LIST_TYPE)
    with pytest.raises(TdlError):
        c.append(TypeIdentifier('c'))

    c = ConsList([TypeIdentifier('a')], end=Coreference('x'))
    assert len(c) == 2
    assert c.terminated is True
Ejemplo n.º 5
0
def test_format_TypeTerms():
    assert tdl.format(TypeIdentifier('a-type')) == 'a-type'
    assert tdl.format(String('a string')) == '"a string"'
    assert tdl.format(Regex('a*re[g]ex')) == '^a*re[g]ex$'
    assert tdl.format(Coreference('coref')) == '#coref'
Ejemplo n.º 6
0
def test_Coreference():
    Coreference(None)
    Coreference('x')
    with pytest.raises(TypeError):
        Coreference()