Exemple #1
0
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
Exemple #2
0
def test_eval():
    evalparse = evalparser()
    assert evalparse("666") == 666
    assert evalparse("6.66") == 6.66
    assert evalparse("nil") == None
    assert evalparse("()") == List()
    assert evalparse("[]") == Vector()
    assert evalparse("[1 2 3]") == Vector(1, 2, 3)
    assert evalparse("{}") == Map()
    m = Map({1: 2})
    assert evalparse("{1 2}") == m
    m = Map({1: 2, 3: 4})
    assert evalparse("{1 2, 3 4}") == m

    try:
        evalparse("a")
        assert False, "UnknownVariable exception not raised!"
    except UnknownVariable:
        pass
    try:
        evalparse("(x)")
        assert False, "UnknownVariable exception not raised!"
    except UnknownVariable:
        pass
    evalparse("(def a 777)")
    assert evalparse("a") == 777
    assert evalparse("a") == 777
    evalparse("(def a 666)")
    assert evalparse("a") == 666
    assert evalparse("[1 a]") == Vector(1, 666)
    assert evalparse(":a") == Keyword("a")
    assert evalparse("(+ 2 2)") == 4
    assert evalparse("(+)") == 0
    assert evalparse("(+ 1 2 3 4)") == 10
    assert evalparse("(*)") == 1
    assert evalparse("(* 1 2 3 4 5)") == 120
    assert evalparse("(+ 2 (+ 2 3))") == 7
    assert evalparse("{}") == Map()
    assert evalparse("{1 2}") == Map({1: 2})
    assert evalparse("({1 2} 1)") == 2
    assert evalparse("({a 1} 666)") == 1
    assert evalparse("({666 1} a)") == 1
    assert evalparse("({a 2 3 a} a)") == 2
    assert evalparse("({a 2 3 a} 3)") == 666
Exemple #3
0
def test_python_compat():
    assert List(1, 2, 3) == [1, 2, 3]
    assert Map() == {}
    assert Map(a=3) == {'a': 3}
    assert Map(a=3) != ['a', 3]
    assert Vector(*range(10)) == range(10)
    assert map(abs, List(-1, -2, -3)) == List(1, 2, 3)
    def infinite_gen():
        x = 1
        while 1:
            x += 1
            yield x
    assert List(1, 2, 3) != infinite_gen()
    assert List(1, 2) != List(1, 2, 3)
Exemple #4
0
 def p_empty_vector(self, p):
     'vector : LBRACKET RBRACKET'
     p[0] = Vector()
Exemple #5
0
 def p_vector(self, p):
     'vector : LBRACKET sexprs RBRACKET'
     try:
         p[0] = apply(Vector, p[2])
     except TypeError:
         p[0] = Vector(p[2])