Пример #1
0
def test_main_pos3():
    env = Env(make_global_frame())
    make_counter = """
    ((lambda ()
             (define counter
                     ((lambda (x)
                              (lambda () (update x (add x 1))
                                         x))
                              0))
             (counter)
             (counter)
             (counter)
    ))"""
    actual = read_expr(make_counter)[0].eval(env)
    expected = NUMBER(3)
    eq_(actual, expected)
Пример #2
0
def test_eval_pos5():
    env = Env({SYMBOL('add'): PRIMITIVE_FUNC(fn_add)})
    actual = LIST(SYMBOL('add'), NUMBER(10), NUMBER(20)).eval(env)
    expected = NUMBER(30)
    eq_(actual, expected)
Пример #3
0
def test_eval_pos4():
    env = Env({SYMBOL('if'): SPECIAL_FORM(sf_if)})
    actual = LIST(SYMBOL('if'), TRUE(), NUMBER(10), NUMBER(20)).eval(env)
    expected = NUMBER(10)
    eq_(actual, expected)
Пример #4
0
def test_eval_pos3():
    env = Env({SYMBOL('foo'): NUMBER(100)})
    actual = SYMBOL('foo').eval(env)
    expected = NUMBER(100)
    eq_(actual, expected)
Пример #5
0
def test_eval_pos2():
    actual = LIST(SPECIAL_FORM(sf_if), TRUE(), NUMBER(10),
                  NUMBER(20)).eval(Env({}))
    expected = NUMBER(10)
    eq_(actual, expected)
Пример #6
0
def test_eval_pos1():
    actual = LIST(PRIMITIVE_FUNC(fn_add), NUMBER(1), NUMBER(2)).eval(Env({}))
    expected = NUMBER(3)
    eq_(actual, expected)
Пример #7
0
def test_eval_pos0():
    actual = NIL().eval(Env({}))
    expected = NIL()
    eq_(actual, expected)
Пример #8
0
def test_main_pos2():
    env = Env(make_global_frame())
    actual = read_expr('((lambda (x y) (add x y)) 10 20)')[0].eval(env)
    expected = NUMBER(30)
    eq_(actual, expected)
Пример #9
0
def test_main_pos0():
    env = Env({SYMBOL('if'): SPECIAL_FORM(sf_if), SYMBOL('true'): TRUE()})
    actual = read_expr('(if true 1 2)')[0].eval(env)
    expected = NUMBER(1)
    eq_(actual, expected)