def test_evaluate_math_subtract_basic(self): exp = [ BinaryFunctionNode(operator.sub, NumberNode(48), NumberNode(22)) ] result = evaluate(exp) expected = [26] self.assertEqual(result, expected)
def test_evaluate_math_multiply_basic(self): exp = [ BinaryFunctionNode(operator.mul, NumberNode(10), NumberNode(10)) ] result = evaluate(exp) expected = [100] self.assertEqual(result, expected)
def test_evaluate_math_add_basic(self): exp = [ BinaryFunctionNode(operator.add, NumberNode(123), NumberNode(41)) ] result = evaluate(exp) expected = [164] self.assertEqual(result, expected)
def test_evaluate_math_divide_basic(self): exp = [ BinaryFunctionNode(operator.truediv, NumberNode(225), NumberNode(5)) ] result = evaluate(exp) expected = [45] self.assertEqual(result, expected)
def test_cond_node(self): result = CondNode([ (BinaryFunctionNode(operator.eq, NumberNode(4), NumberNode(5)), NumberNode(9)), (BinaryFunctionNode(operator.eq, NumberNode(7523), NumberNode(123)), NumberNode(5)), (BinaryFunctionNode(operator.eq, NumberNode(7), NumberNode(7)), NumberNode(34)) ]).evaluate() expected = 34 self.assertEqual(result, expected)
def test_evaluate_cond_basic(self): exp = [ CondNode([(BinaryFunctionNode(operator.eq, NumberNode(123), NumberNode(3)), NumberNode(23)), (BinaryFunctionNode(operator.eq, NumberNode(246), NumberNode(542)), NumberNode(55)), (BinaryFunctionNode(operator.eq, NumberNode(67), NumberNode(67)), NumberNode(1))]) ] result = evaluate(exp) expected = [1] self.assertEqual(result, expected)
def parse_expression(tokens): curr = tokens.pop(0) if curr.type == TokenType.LPAREN: expr = parse_operator(tokens) nxt = tokens.pop(0) if nxt.type == TokenType.RPAREN: return expr else: print("RPAREN Error", nxt.type) return elif curr.type == TokenType.INTEGER: return NumberNode(curr.value) elif curr.type == TokenType.ID: return IdNode(curr.value) elif curr.type == TokenType.TRUE or curr.type == TokenType.FALSE: return BooleanNode(curr.value) else: print("LPAREN Error", curr.type) return
def test_unary_function_node(self): result = UnaryFunctionNode(operator.abs, NumberNode(-25)).evaluate() expected = 25 self.assertEqual(result, expected)
def test_binary_function_node(self): result = BinaryFunctionNode(operator.add, NumberNode(4), NumberNode(7)).evaluate() expected = 11 self.assertEqual(result, expected)
def test_number_node(self): result = NumberNode(5).evaluate() expected = 5 self.assertEqual(result, expected)
def test_define_node(self): DefineNode("dog", NumberNode(123)).evaluate() result = expression_for_id["dog"] expected = 123 self.assertEqual(result, expected)