def test_parser(): parse = PyClojureParse().build().parse assert parse("an_atom") == Atom('an_atom') assert parse("(simple_list)") == List(Atom('simple_list')) assert parse('(two elements)') == List(Atom('two'), Atom('elements')) assert (parse("(three element list)") == List(Atom('three'), Atom('element'), Atom('list'))) assert parse('666') == 666 assert (parse('(a (nested (list)))') == List( Atom('a'), List(Atom('nested'), List(Atom('list'))))) assert parse('()') == List()
def test_core(): Atom() Atom('a') Atom(name='a', value=6) List() List(Atom('car')) List(Atom('car'), Atom('cadr'), 666) List(List()) List(List('car')) Vector() Vector(1, 2, 3) Keyword("a") assert Atom() == Atom() assert List() == List() assert List(1) == List(1) assert List(2) != List(1) assert List(1, 2) != List(2, 1) assert List(1, 2) == List(1, 2) assert List(Atom()) == List(Atom()) assert List(Atom('a')) == List(Atom('a')) assert List(Atom('b')) != List(Atom('a')) assert Vector(1, 2) != Vector(2, 1) assert Vector(1, 2) == Vector(1, 2) assert Vector(1, 2) == List(1, 2) assert Keyword("a") == Keyword("a") assert Keyword("a") != Keyword("b") Map() Map(x=1) assert Map(x=1).keys() == ['x'] assert Map(x=1) == Map(x=1) assert Map(x=1) != Map(x=2) assert Map(x=1) != Map(x=1, a=3) assert Map(x=1)["x"] == 1
def deref_expr(raw): return List(Atom('deref'), raw)
def p_sexpr_atom(self, p): 'sexpr : ATOM' p[0] = Atom(p[1])
def quote_expr(raw): return List(Atom('quote'), raw)