Skip to content

Commit 5a3c440

Browse files
authored
Merge pull request #3 from hellerve/codex/propose-additional-tests
Add additional Mae unit tests
2 parents e8921dc + 749396d commit 5a3c440

1 file changed

Lines changed: 51 additions & 0 deletions

File tree

tests/test_map_methods.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import unittest
2+
from mae import Mae, Map, Var, Fn, RunError
3+
4+
class MapMethodTests(unittest.TestCase):
5+
def test_this_and_next_empty(self):
6+
m = Map({})
7+
self.assertEqual(m.this(), Map({}))
8+
self.assertEqual(m.next(), Map({}))
9+
10+
def test_this_and_next_singleton(self):
11+
key = Map({})
12+
value = Map({})
13+
m = Map({key: value})
14+
self.assertEqual(m.this(), key)
15+
self.assertEqual(m.next(), value)
16+
17+
def test_this_and_next_multiple(self):
18+
key1 = Map({})
19+
value1 = Map({'foo': Map({})})
20+
key2 = Map({'bar': Map({})})
21+
value2 = Map({})
22+
m = Map({key1: value1, key2: value2})
23+
self.assertEqual(m.this(), Map({key1: value1}))
24+
self.assertEqual(m.next(), Map({key2: value2}))
25+
26+
def test_apply_existing_and_missing_key(self):
27+
key = Map({})
28+
val = Map({'v': Map({})})
29+
m = Map({key: val})
30+
env = Mae()
31+
self.assertEqual(m.apply([key], env), val)
32+
self.assertEqual(m.apply([Map({Map({}): Map({})})], env), Map({}))
33+
34+
class ClosureAndEqTests(unittest.TestCase):
35+
def test_closure_wrong_argument_count(self):
36+
env = Mae()
37+
f = Fn([Var('a')], Var('a')).evaluate(env)
38+
with self.assertRaises(RunError):
39+
f.apply([], env)
40+
41+
def test_eq_primitive(self):
42+
env = Mae()
43+
eq = env.lookup('=')
44+
m1 = Map({Map({}): Map({})})
45+
m2 = Map({Map({}): Map({})})
46+
self.assertEqual(eq.apply([m1, m2], env), Map({Map({}): Map({})}))
47+
m3 = Map({Map({}): Map({Map({}): Map({})})})
48+
self.assertEqual(eq.apply([m1, m3], env), Map({}))
49+
50+
if __name__ == '__main__':
51+
unittest.main()

0 commit comments

Comments
 (0)