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)
def test_can_tokenize_strange_string(self): tokens = Tokenizer.tokenize(" (+(a) (b) c) ") self.assertEqual(len(tokens), 10) self.assertEqual(tokens, ["(", "+", "(", "a", ")", "(", "b", ")", "c", ")"])
def test_can_tokenize_simple_string(self): tokens = Tokenizer.tokenize("(* a b)") self.assertEqual(len(tokens), 5) self.assertEqual(tokens, ["(", "*", "a", "b", ")"])