Exemple #1
0
 def test_can_lookup_variable_from_the_environment(self):
     env = Environment()
     env.set("a", 2.0)
     env.set("b", 3.0)
     parse_tree = [ OperatorFactory.make_operator("*"), Symbol("a"), Symbol("b") ]
     result = Evaluator.evaluate(parse_tree, env)
     self.assertEqual(result, 6.0)
Exemple #2
0
 def test_can_handle_nested_arithmetic(self):
     parse_tree = [ OperatorFactory.make_operator("*"), 
                    Number(2.0), 
                    [ OperatorFactory.make_operator("+"), Number(4.0), Number(5.0) ] ]
     result = Evaluator.evaluate(parse_tree)
     self.assertEqual(result, 18.0)
Exemple #3
0
 def test_raises_exception_on_unknown_operator(self):
     with self.assertRaises(Exception) as context:
         OperatorFactory.make_operator("#")
     self.assertEqual(str(context.exception), 'Unknown operator: #')
Exemple #4
0
 def test_can_evaluate_simple_subtraction(self):
     parse_tree = [ OperatorFactory.make_operator("-"), Number(8.0), Number(4.0), Number(1.0) ]
     result = Evaluator.evaluate(parse_tree)
     self.assertEqual(result, 3.0)
Exemple #5
0
 def test_can_evaluate_simple_division(self):
     parse_tree = [ OperatorFactory.make_operator("/"), Number(8.0), Number(2.0) ]
     result = Evaluator.evaluate(parse_tree)
     self.assertEqual(result, 4.0)
Exemple #6
0
 def test_can_evaluate_simple_addition(self):
     parse_tree = [ OperatorFactory.make_operator("+"), Number(2.0), Number(3.0) ]
     result = Evaluator.evaluate(parse_tree)
     self.assertEqual(result, 5.0)
Exemple #7
0
 def test_can_set_variable_to_the_environment(self):
     env = Environment()
     parse_tree = [ OperatorFactory.make_operator("set!"), Symbol("x"), Number(19) ]
     Evaluator.evaluate(parse_tree, env)
     self.assertEqual(env.get("x"), 19)