Skip to content
This repository was archived by the owner on Jan 4, 2025. It is now read-only.

Commit eb9af00

Browse files
committed
add some simple tests for the evaluator and fix a bug they found.
1 parent 0559677 commit eb9af00

File tree

2 files changed

+39
-1
lines changed

2 files changed

+39
-1
lines changed

eval.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def ac_global_name(s):
2323
map)
2424

2525
arc_globals = dict((ac_global_name(Symbol(f.func_name)), f) for f in EXPOSED_FUNCTIONS)
26-
arc_globals[t] = t
26+
arc_globals[ac_global_name(t)] = t
2727
arc_globals[ac_global_name(Symbol('+'))] = lambda *args: sum(args)
2828

2929

test_eval.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import unittest
2+
3+
import eval
4+
from larktypes import String
5+
from roots import *
6+
from symbol import *
7+
8+
class TestEval(unittest.TestCase):
9+
def teststring(self):
10+
self.assertEqual(eval.ac_eval(String('ab'), {}), String('ab'))
11+
12+
def testint(self):
13+
self.assertEqual(eval.ac_eval(1, {}), 1)
14+
15+
def testfloat(self):
16+
self.assertEqual(eval.ac_eval(0.5, {}), 0.5)
17+
18+
def testvarref(self):
19+
self.assertEqual(eval.ac_eval(Symbol('a'), {Symbol('a'): 42}), 42)
20+
21+
def testquote(self):
22+
self.assertEqual(eval.ac_eval([Symbol('quote'), [Symbol('a'), nil]], {}),
23+
Symbol('a'))
24+
25+
def testif(self):
26+
self.assertEqual(eval.ac_eval([Symbol('if'), nil], {}), nil)
27+
self.assertEqual(eval.ac_eval(list(Symbol('if'), t, 1, 2), {}), 1)
28+
29+
def testfncall(self):
30+
# (fn (a) (if a 1 2))
31+
fun = list(Symbol('fn'), list(Symbol('a')),
32+
list(Symbol('if'), Symbol('a'), 1, 2))
33+
self.assertEqual(eval.ac_eval(list(fun, nil), {}), 2)
34+
self.assertEqual(eval.ac_eval(list(fun, String('x')), {}), 1)
35+
36+
37+
if __name__ == '__main__':
38+
unittest.main()

0 commit comments

Comments
 (0)