Пример #1
0
 def test_env_constructor_binds_multiple(self):
     env = Env(
         outer=None,
         binds=[MalSymbol("a"), MalSymbol("b")],
         exprs=[MalInt(44), MalInt(32)],
     )
     self.assertEqual(44, env.get("a").native())
     self.assertEqual(32, env.get("b").native())
Пример #2
0
 def test_step8_is_macro(self):
     self.assertEqual(False,
                      MalFunctionCompiled(lambda a: MalInt(1)).is_macro())
     self.assertEqual(
         False,
         MalFunctionRaw(core.ns["+"], MalInt(1), MalList([]),
                        Env(None)).is_macro(),
     )
Пример #3
0
 def test_eval_1_plus_1(self):
     env = Env(None)
     env.set(
         "+",
         mal_types.MalFunctionCompiled(
             lambda a: MalInt(a[0].native() + a[1].native())),
     )
     self.assertEqual(
         2,
         step3_env.EVAL(MalList([MalSymbol("+"),
                                 MalInt(1),
                                 MalInt(1)]), env).native(),
     )
Пример #4
0
 def test_if_basic_false(self):
     env = Env(None)
     self.assertEqual(
         1234,
         step4_if_fn_do.EVAL(
             MalList([
                 MalSymbol("if"),
                 MalBoolean(False),
                 MalInt(4321),
                 MalInt(1234)
             ]),
             env,
         ).native(),
     )
Пример #5
0
 def test_MalFunctionCompiled(self):
     self.assertEqual(
         "3",
         str(
             mal_types.MalFunctionCompiled(
                 lambda a: MalInt(a[0].native() + a[1].native())).call(
                     [mal_types.MalInt(1),
                      mal_types.MalInt(2)])),
     )
Пример #6
0
 def test_def(self):
     env = Env(None)
     self.assertEqual(
         1,
         step3_env.EVAL(
             MalList([MalSymbol("def!"),
                      MalSymbol("a"),
                      MalInt(1)]), env).native(),
     )
     self.assertEqual(1, env.get("a").native())
Пример #7
0
 def test_if_basic_false_no_fourth_arg(self):
     env = Env(None)
     self.assertEqual(
         "nil",
         str(
             step4_if_fn_do.EVAL(
                 MalList([MalSymbol("if"),
                          MalBoolean(False),
                          MalInt(4321)]), env)),
     )
Пример #8
0
 def test_let_advanced(self):
     env = Env(None)
     env.set(
         "+",
         mal_types.MalFunctionCompiled(
             lambda a: MalInt(a[0].native() + a[1].native())),
     )
     self.assertEqual(
         4,
         step3_env.EVAL(
             MalList([
                 MalSymbol("let*"),
                 MalList([MalSymbol("c"), MalInt(2)]),
                 MalList([MalSymbol("+"),
                          MalSymbol("c"),
                          MalInt(2)]),
             ]),
             env,
         ).native(),
     )
Пример #9
0
 def test_let_basic(self):
     env = Env(None)
     self.assertEqual(
         2,
         step3_env.EVAL(
             MalList([
                 MalSymbol("let*"),
                 MalList([MalSymbol("c"), MalInt(2)]),
                 MalSymbol("c"),
             ]),
             env,
         ).native(),
     )
Пример #10
0
 def test_mallist_native(self):
     x = MalInt(1)
     self.assertEqual([x], MalList([x]).native())
Пример #11
0
 def test_eval_invalid(self):
     with self.assertRaises(MalInvalidArgumentException):
         step3_env.EVAL(MalList([MalInt(1), MalInt(2)]), Env(None))
Пример #12
0
 def test_env_get(self):
     env = Env(None)
     expression = MalInt(1)
     env.set("key", expression)
     self.assertTrue(env.get("key") is expression)
Пример #13
0
 def test_print_function(self):
     self.assertEqual("#<function>",
                      str(MalFunctionCompiled(lambda x: MalInt(0))))
Пример #14
0
 def test_env_find(self):
     e = Env(None)
     e.set("key", MalInt(1))
     result = e.find("key")
     self.assertTrue(e is result)
Пример #15
0
 def test_env_constructor_binds(self):
     env = Env(outer=None, binds=[MalSymbol("a")], exprs=[MalInt(3)])
     self.assertEqual(3, env.get("a").native())
Пример #16
0
 def test_env_find_outer(self):
     outer = Env(None)
     e = Env(outer)
     outer.set("key", MalInt(1))
     result = e.find("key")
     self.assertTrue(result is outer)
Пример #17
0
 def test_step6_atom_type(self):
     atom = step6_file.EVAL(MalAtom(MalInt(1)), Env(None))
     self.assertEqual(1, atom.native().native())