def test_begin(self): set_var = e.eval([ p._begin, [p._define, p.Symbol('x'), 3], [p._set, p.Symbol('x'), 5], [p.Symbol('+'), p.Symbol('x'), 1] ]) assert set_var == 6
def test_lambda(self): lambda_list = [ p._lambda, p.Symbol('x'), [p.Symbol('+'), p.Symbol('x'), p.Symbol('x')] ] lambda_func = e.eval(lambda_list) assert type(lambda_func) == type(e.Procedure('blah', 'blah', 'blah')) assert lambda_func(3) == 6
def test_to_string(): assert u.to_string(True) == '#t' assert u.to_string(False) == '#f' assert u.to_string(p.Symbol('x')) == 'x' assert u.to_string([1, 2, 3, 4]) == '(1 2 3 4)' assert u.to_string(complex(4, -3)) == '(4-3i)'
def test_set(self): e.eval([p._set, p.Symbol('x'), 3]) assert e.eval(p.Symbol('x')) == 3
def test_define(self): e.eval([p._define, p.Symbol('x'), 3]) assert e.eval(p.Symbol('x')) == 3
def test_if(self): true_if_statement = [p._if, [p.Symbol('='), 1, 1], 5, 'blah'] false_if_statement = [p._if, [p.Symbol('='), 1, 2], 5, 'blah'] assert e.eval(true_if_statement) == 5 assert e.eval(false_if_statement) == 'blah'