コード例 #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_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())
コード例 #3
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(),
     )
コード例 #4
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)),
     )
コード例 #5
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(),
     )
コード例 #6
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(),
     )
コード例 #7
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(),
     )
コード例 #8
0
 def test_env_constructor_binds(self):
     env = Env(outer=None, binds=[MalSymbol("a")], exprs=[MalInt(3)])
     self.assertEqual(3, env.get("a").native())