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]
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" !>'
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'
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
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'
def test_Coreference(): Coreference(None) Coreference('x') with pytest.raises(TypeError): Coreference()