aboutsummaryrefslogtreecommitdiff
path: root/ql/ast/nodes/expressions/binary_operators/less_equals_operator.py
blob: f5b86df8f6d47086b3f5807ad76bf7806ab2d929 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from ql.ast.nodes.expressions.binary_operators.binary_operator import BinaryOperatorNode
from ql.types.boolean import QLBoolean
from ql.types.date import QLDate
from ql.types.decimal import QLDecimal
from ql.types.integer import QLInteger
from ql.types.money import QLMoney
from ql.types.undefined import QLUndefined


class LessEqualsOperatorNode(BinaryOperatorNode):
    def __init__(self, metadata, expression_type, left_expression, right_expression, value):
        super(LessEqualsOperatorNode, self).__init__(metadata, expression_type,
                                                     left_expression, right_expression, value)
        self.__valid_types = [
            (QLDate,    QLDate),
            (QLDecimal, QLDecimal),
            (QLDecimal, QLInteger),
            (QLInteger, QLInteger),
            (QLInteger, QLDecimal),
            (QLMoney,   QLMoney),
        ]

    def get_result_type(self):
        if (self.left_expression.expression_type, self.right_expression.expression_type) in self.__valid_types:
            return QLBoolean

        return QLUndefined

    def evaluate(self):
        self.value = self.left_expression.value <= self.right_expression.value