def test_evaluate_divide_by_zero(self): """ In case of divide by zero it should return None for that operator node """ input_string_list = ('2 / 0', '1 + (2 / 0)') for input_string in input_string_list: root_node = build_tree(input_string) with self.assertRaises(EvaluationError): evaluate(root_node)
def test_evaluate_non_digit_token(self): input_string = 'A + (B * C)' root_node = build_tree(input_string) with self.assertRaises(EvaluationError): evaluate(root_node)
def test_invalid_exp(self): input_string_list = ('1 + (3*5', '(2 * 3 - 1') for input_string in input_string_list: with self.assertRaises(InvalidInput): build_tree(input_string)
def test_evaluate(self): for input_string_tup in self.input_string_list: input_string, expected_result = input_string_tup root_node = build_tree(input_string) self.assertEqual(evaluate(root_node), expected_result)
def test_build_tree(self): for input_string_tup in self.input_string_list: input_string, _ = input_string_tup root_node = build_tree(input_string) self.assertIsInstance(root_node, Tree) self.assertIsNotNone(root_node.get_val())