def test_arithmetic_expression(self): self.check_parser('%s**true' % DATE_STR, AST.Exp(DATE_AST, AST.Boolean(True))) self.check_parser('%s **true' % NEGATION_STR, AST.Exp(NEGATION_AST, AST.Boolean(True))) self.check_parser('%s /true **%s' % (NEGATION_STR, NAME_STR), AST.Div(NEGATION_AST, AST.Exp(AST.Boolean(True), NAME_AST))) self.check_parser('%s *true **%s' % (NEGATION_STR, NAME_STR), AST.Mul(NEGATION_AST, AST.Exp(AST.Boolean(True), NAME_AST))) self.check_parser('%s +1.2 /true **%s' % (NEGATION_STR, NAME_STR), AST.Sum(NEGATION_AST, AST.Div(AST.Number(1.2), AST.Exp(AST.Boolean(True), NAME_AST)))) self.check_parser(ARITHMETIC_EXPRESSION_STR, ARITHMETIC_EXPRESSION_AST)
IF_AST = AST.If(QUANTIFIED_AST, DISJUNCTION_AST, CONJUNCTION_AST) FOR_STR = 'for ala in %s return %s' % (IF_STR, QUANTIFIED_STR) FOR_AST = AST.For([(AST.Name('ala'), IF_AST)], QUANTIFIED_AST) PATH_STR = '%s.ala' % DATE_STR PATH_AST = AST.Path(DATE_AST, AST.Name('ala')) INVOCATION_STR = '%s(%s, %s)' % (PATH_STR, FOR_STR, IF_STR) INVOCATION_AST = AST.Invocation(PATH_AST, [FOR_AST, IF_AST]) NEGATION_STR = '-?A_zÊÝĄͼൺ⁶Ⰲ〠邏2𐎅' NEGATION_AST = AST.Negation(AST.Name('?A_zÊÝĄͼൺ⁶Ⰲ〠邏2𐎅')) ARITHMETIC_EXPRESSION_STR = '1.2-%s /true **%s' % (NEGATION_STR, NAME_STR) ARITHMETIC_EXPRESSION_AST = AST.Dif(AST.Number(1.2), AST.Div(NEGATION_AST, AST.Exp(AST.Boolean(True), NAME_AST))) NOT_STR = 'not (null)' NOT_AST = AST.Not(AST.PositiveUnaryTests([AST.Null()])) POSITIVE_UNARY_TESTS_STR = '%s in (null, null)' % ARITHMETIC_EXPRESSION_STR POSITIVE_UNARY_TESTS_AST = AST.In(ARITHMETIC_EXPRESSION_AST, AST.PositiveUnaryTests([AST.Null()] * 2)) POSITIVE_UNARY_TEST_STR = '%s in (null, %s)' % (POSITIVE_UNARY_TESTS_STR, DATE_STR) POSITIVE_UNARY_TEST_AST = AST.In(POSITIVE_UNARY_TESTS_AST, AST.PositiveUnaryTests([AST.Null(), AST.Endpoint(DATE_AST)])) SIMPLE_POSITIVE_UNARY_TESTS_STR = 'ala, "ala"' SIMPLE_POSITIVE_UNARY_TESTS_AST = AST.PositiveUnaryTests([AST.Endpoint([AST.Name('ala')]), AST.Endpoint(AST.StringLiteral('ala'))])