Example #1
0
 def test_expr_function__and_eq(self):
     self.assertParse(
         qSelect(qp.Wildcard(),
                 where_clause=qp.And(
                     qp.Equal(qp.Column('a'), qp.Constant(2)),
                     qp.Not(qp.Equal(qp.Column('b'), qp.Constant(3))))),
         "SELECT * WHERE a = 2 AND b != 3;")
Example #2
0
    def test_expr_constant_date(self):
        self.assertParse(
            qSelect([qp.Target(qp.Constant(datetime.date(1972, 5, 28)),
                               None)]), "SELECT 1972-05-28;")

        self.assertParse(
            qSelect([qp.Target(qp.Constant(datetime.date(1972, 5, 28)),
                               None)]), "SELECT #'May 28, 1972';")
Example #3
0
    def test_expr_numerical(self):
        expected = qSelect(
            [qp.Target(qp.Add(qp.Constant(2), qp.Constant(3)), None)])
        self.assertParse(expected, "SELECT 2+(3);")

        expected = qSelect(
            [qp.Target(qp.Sub(qp.Constant(2), qp.Constant(3)), None)])
        self.assertParse(expected, "SELECT 2-(3);")
Example #4
0
 def test_expr_function__membership_precedence(self):
     self.assertParse(
         qSelect(qp.Wildcard(),
                 where_clause=qp.And(
                     qp.Contains(qp.Constant('orange'), qp.Column('tags')),
                     qp.Contains(qp.Constant('bananas'),
                                 qp.Column('tags')))),
         "SELECT * WHERE 'orange' IN tags AND 'bananas' IN tags;")
Example #5
0
    def test_expr_constant_decimal(self):
        self.assertParse(qSelect([qp.Target(qp.Constant(D('17.345')), None)]),
                         "SELECT 17.345;")

        self.assertParse(qSelect([qp.Target(qp.Constant(D('.345')), None)]),
                         "SELECT .345;")

        self.assertParse(qSelect([qp.Target(qp.Constant(D('17.')), None)]),
                         "SELECT 17.;")
Example #6
0
 def test_expr_paren_multi2(self):
     self.assertParse(
         qSelect([qp.Target(
             qp.Not(qp.Equal(
                 qp.Column('a'),
                 qp.Not(qp.Equal(
                     qp.Column('b'),
                     qp.And(qp.Constant(42),
                            qp.Constant(17)))))),
             None)]),
         "SELECT a != (b != (42 AND 17));")
Example #7
0
 def test_expr_match(self):
     self.assertParse(
         qSelect([
             qp.Target(
                 qp.Match(qp.Column('a'),
                          qp.Constant('Assets:.*:Checking')), None)
         ]), "SELECT a ~ 'Assets:.*:Checking';")
Example #8
0
 def test_groupby_expr(self):
     self.assertParse(
         qSelect(qp.Wildcard(),
                 group_by=qp.GroupBy([
                     qp.Greater(qp.Function('length', [qp.Column('a')]), qp.Constant(0)),
                     qp.Column('b')], None)),
         "SELECT * GROUP BY length(a) > 0, b;")
Example #9
0
 def test_balances_from_with_transformer_simple(self):
     self.assertParse(
         qp.Balances(
             'units', None,
             qp.Equal(qp.Column('date'),
                      qp.Constant(datetime.date(2014, 1, 1)))),
         "BALANCES AT units WHERE date = 2014-01-01;")
Example #10
0
 def test_expr_binaryop(self):
     self.assertEqual(qc.EvalEqual(qe.DateColumn(),
                                   qc.EvalConstant(datetime.date(2014, 1, 1))),
                      qc.compile_expression(
                          qp.Equal(qp.Column('date'),
                                   qp.Constant(datetime.date(2014, 1, 1))),
                          qe.TargetsEnvironment()))
Example #11
0
 def test_print_from(self):
     self.assertParse(
         qp.Print(
             qp.From(
                 qp.Equal(qp.Column('date'),
                          qp.Constant(datetime.date(2014, 1, 1))), None,
                 True, None)), "PRINT FROM date = 2014-01-01 CLOSE;")
Example #12
0
 def test_groupby_having(self):
     self.assertParse(
         qSelect(qp.Wildcard(),
                 group_by=qp.GroupBy(
                     [qp.Column('a')],
                     qp.Equal(qp.Function('sum', [qp.Column('position')]),
                              qp.Constant(0)))),
         "SELECT * GROUP BY a HAVING sum(position) = 0;")
Example #13
0
 def setUp(self):
     super().setUp()
     self.targets = [qp.Target(qp.Column('a'), None),
                     qp.Target(qp.Column('b'), None)]
     self.expr = qp.Equal(qp.Column('d'),
                          qp.And(
                              qp.Function('max', [qp.Column('e')]),
                              qp.Constant(17)))
Example #14
0
 def test_journal_from(self):
     self.assertParse(
         qp.Journal(
             None, None,
             qp.From(
                 qp.Equal(qp.Column('date'),
                          qp.Constant(datetime.date(2014, 1, 1))), None,
                 True, None)), "JOURNAL FROM date = 2014-01-01 CLOSE;")
Example #15
0
 def test_balances_from_with_transformer(self):
     self.assertParse(
         qp.Balances('units',
                     qp.From(qp.Equal(qp.Column('date'),
                                      qp.Constant(datetime.date(2014, 1, 1))),
                             None, True, None),
                     None),
         "BALANCES AT units FROM date = 2014-01-01 CLOSE;")
Example #16
0
 def test_journal(self):
     journal = self.parse("JOURNAL;")
     select = qc.transform_journal(journal)
     self.assertEqual(
         qp.Select([
             qp.Target(qp.Column('date'), None),
             qp.Target(qp.Column('flag'), None),
             qp.Target(qp.Function('maxwidth', [qp.Column('payee'),
                                                qp.Constant(48)]), None),
             qp.Target(qp.Function('maxwidth', [qp.Column('narration'),
                                                qp.Constant(80)]), None),
             qp.Target(qp.Column('account'), None),
             qp.Target(qp.Column('position'), None),
             qp.Target(qp.Column('balance'), None),
         ],
              None, None, None, None, None, None, None, None),
         select)
Example #17
0
 def test_balances_from(self):
     self.assertParse(
         qp.Balances(
             None,
             qp.From(
                 qp.Equal(qp.Column('date'),
                          qp.Constant(datetime.date(2014, 1, 1))), None,
                 True, None)), "BALANCES FROM date = 2014-01-01 CLOSE;")
Example #18
0
    def test_from_select(self):
        subselect = qSelect(
            qp.Wildcard(),
            qp.From(qp.Equal(qp.Column('date'),
                             qp.Constant(datetime.date(2014, 5, 2))),
                    None, None, None))

        expected = qSelect([qp.Target(qp.Column('a'), None),
                            qp.Target(qp.Column('b'), None)],
                           subselect,
                           qp.Equal(qp.Column('c'), qp.Constant(5)),
                           limit=100)

        self.assertParse(expected, """
           SELECT a, b FROM (
              SELECT * FROM date = 2014-05-02
           ) WHERE c = 5 LIMIT 100;
        """)
Example #19
0
 def test_expr_function__mul_div_plus_minus(self):
     self.assertParse(
         qSelect(qp.Wildcard(),
                 where_clause=qp.Sub(
                     qp.Add(
                         qp.Mul(qp.Column(name='a'), qp.Column(name='b')),
                         qp.Div(qp.Column(name='c'), qp.Column(name='d'))),
                     qp.Constant(value=3))),
         "SELECT * WHERE a * b + c / d - 3;")
Example #20
0
 def test_explain_select(self):
     self.assertParse(
         qp.Explain(
             qSelect([
                 qp.Target(qp.Column('date'), None),
                 qp.Target(qp.Column('account'), None)
             ],
                     where_clause=qp.Match(qp.Column('account'),
                                           qp.Constant('etrade')))),
         "EXPLAIN SELECT date, account WHERE account ~ 'etrade';")
Example #21
0
 def test_journal_with_account_and_from(self):
     journal = self.parse("JOURNAL 'liabilities' FROM year = 2014;")
     select = qc.transform_journal(journal)
     self.assertEqual(
         qp.Select([
             qp.Target(qp.Column('date'), None),
             qp.Target(qp.Column('flag'), None),
             qp.Target(qp.Function('maxwidth', [qp.Column('payee'),
                                                qp.Constant(48)]), None),
             qp.Target(qp.Function('maxwidth', [qp.Column('narration'),
                                                qp.Constant(80)]), None),
             qp.Target(qp.Column('account'), None),
             qp.Target(qp.Column('position'), None),
             qp.Target(qp.Column('balance'), None),
         ],
              qp.From(qp.Equal(qp.Column('year'), qp.Constant(2014)), None, None, None),
                  qp.Match(qp.Column('account'), qp.Constant('liabilities')),
                  None, None, None, None, None, None),
         select)
Example #22
0
 def test_balance_with_units_and_from(self):
     balance = self.parse("BALANCES AT cost FROM year = 2014;")
     select = qc.transform_balances(balance)
     self.assertEqual(
         qp.Select([
             qp.Target(qp.Column('account'), None),
             qp.Target(
                 qp.Function(
                     'sum', [qp.Function('cost', [qp.Column('position')])]),
                 None),
         ],
                   qp.From(qp.Equal(qp.Column('year'), qp.Constant(2014)),
                           None, None, None), None, self.group_by,
                   self.order_by, None, None, None, None), select)
Example #23
0
 def test_expr_gte(self):
     self.assertParse(
         qSelect([
             qp.Target(qp.GreaterEq(qp.Column('a'), qp.Constant(42)), None)
         ]), "SELECT a >= 42;")
Example #24
0
 def test_expr_constant_integer(self):
     self.assertParse(qSelect([qp.Target(qp.Constant(17), None)]),
                      "SELECT 17;")
Example #25
0
 def test_expr_constant(self):
     self.assertEqual(
         qc.EvalConstant(D(17)),
         qc.compile_expression(qp.Constant(D(17)), qe.TargetsEnvironment()))
Example #26
0
 def test_constant(self):
     self.assertEqual('c17', qp.get_expression_name(qp.Constant(17)))
     self.assertEqual(
         'c2014_01_01',
         qp.get_expression_name(qp.Constant(datetime.date(2014, 1, 1))))
Example #27
0
 def test_expr_constant_string(self):
     self.assertParse(qSelect([qp.Target(qp.Constant('rainy-day'), None)]),
                      "SELECT 'rainy-day';")
Example #28
0
 def test_expr_ne(self):
     self.assertParse(
         qSelect([
             qp.Target(qp.Not(qp.Equal(qp.Column('a'), qp.Constant(42))),
                       None)
         ]), "SELECT a != 42;")
Example #29
0
 def test_expr_lte(self):
     self.assertParse(
         qSelect(
             [qp.Target(qp.LessEq(qp.Column('a'), qp.Constant(42)), None)]),
         "SELECT a <= 42;")
Example #30
0
 def test_expr_paren_multi(self):
     self.assertParse(
         qSelect([
             qp.Target(qp.Not(qp.Equal(qp.Column('a'), qp.Constant(42))),
                       None)
         ]), "SELECT not (a = 42);")