Esempio n. 1
0
    def test_can_create_new_function(self):
        # Create a square function (which will be added to the environment)
        env = Environment()
        square_function = "(defun square(x)(* x x)))"
        Evaluator.evaluate(Parser.parse(Tokenizer.tokenize(square_function)), env)
        self.assertTrue(env.get("square"))

        # Call the square function
        call_square_function = "(square 9)"
        returned_value = Evaluator.evaluate(Parser.parse(Tokenizer.tokenize(call_square_function)), env)
        self.assertEqual(returned_value, 81)
Esempio n. 2
0
 def test_can_tokenize_strange_string(self):
     tokens = Tokenizer.tokenize("  (+(a)  (b) c)  ")
     self.assertEqual(len(tokens), 10)
     self.assertEqual(tokens, ["(", "+", "(", "a", ")", "(", "b", ")", "c", ")"])
Esempio n. 3
0
 def test_can_tokenize_simple_string(self):
     tokens = Tokenizer.tokenize("(* a b)")
     self.assertEqual(len(tokens), 5)
     self.assertEqual(tokens, ["(", "*", "a", "b", ")"])