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)
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)
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)
def test_eval_pos3(): env = Env({SYMBOL('foo'): NUMBER(100)}) actual = SYMBOL('foo').eval(env) expected = NUMBER(100) eq_(actual, expected)
def test_eval_pos2(): actual = LIST(SPECIAL_FORM(sf_if), TRUE(), NUMBER(10), NUMBER(20)).eval(Env({})) expected = NUMBER(10) eq_(actual, expected)
def test_eval_pos1(): actual = LIST(PRIMITIVE_FUNC(fn_add), NUMBER(1), NUMBER(2)).eval(Env({})) expected = NUMBER(3) eq_(actual, expected)
def test_eval_pos0(): actual = NIL().eval(Env({})) expected = NIL() eq_(actual, expected)
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)
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)