예제 #1
0
 def test_evaluate_math_subtract_basic(self):
     exp = [
         BinaryFunctionNode(operator.sub, NumberNode(48), NumberNode(22))
     ]
     result = evaluate(exp)
     expected = [26]
     self.assertEqual(result, expected)
예제 #2
0
 def test_evaluate_math_multiply_basic(self):
     exp = [
         BinaryFunctionNode(operator.mul, NumberNode(10), NumberNode(10))
     ]
     result = evaluate(exp)
     expected = [100]
     self.assertEqual(result, expected)
예제 #3
0
 def test_evaluate_math_add_basic(self):
     exp = [
         BinaryFunctionNode(operator.add, NumberNode(123), NumberNode(41))
     ]
     result = evaluate(exp)
     expected = [164]
     self.assertEqual(result, expected)
예제 #4
0
 def test_evaluate_math_divide_basic(self):
     exp = [
         BinaryFunctionNode(operator.truediv, NumberNode(225),
                            NumberNode(5))
     ]
     result = evaluate(exp)
     expected = [45]
     self.assertEqual(result, expected)
예제 #5
0
 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)
예제 #6
0
 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)
예제 #7
0
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
예제 #8
0
 def test_unary_function_node(self):
     result = UnaryFunctionNode(operator.abs, NumberNode(-25)).evaluate()
     expected = 25
     self.assertEqual(result, expected)
예제 #9
0
 def test_binary_function_node(self):
     result = BinaryFunctionNode(operator.add, NumberNode(4),
                                 NumberNode(7)).evaluate()
     expected = 11
     self.assertEqual(result, expected)
예제 #10
0
 def test_number_node(self):
     result = NumberNode(5).evaluate()
     expected = 5
     self.assertEqual(result, expected)
예제 #11
0
 def test_define_node(self):
     DefineNode("dog", NumberNode(123)).evaluate()
     result = expression_for_id["dog"]
     expected = 123
     self.assertEqual(result, expected)