def test_uses_balance_column(self): c_simple = qe.BalanceColumn() self.assertTrue(qx.uses_balance_column(c_simple)) c_simple_not = qe.AccountColumn() self.assertFalse(qx.uses_balance_column(c_simple_not)) c_subexpr = qc.EvalEqual(qe.BalanceColumn(), qc.EvalConstant(2012)) self.assertTrue(qx.uses_balance_column(c_subexpr)) c_subexpr_not = qc.EvalEqual(qe.AccountColumn(), qc.EvalConstant('Assets')) self.assertFalse(qx.uses_balance_column(c_subexpr_not))
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()))
def test_is_aggregate_derived(self): columns, aggregates = qc.get_columns_and_aggregates( qc.EvalAnd( qc.EvalEqual(qe.PositionColumn(), qc.EvalConstant(42)), qc.EvalOr( qc.EvalNot( qc.EvalEqual( qe.DateColumn(), qc.EvalConstant(datetime.date(2014, 1, 1)))), qc.EvalConstant(False)))) self.assertEqual((2, 0), (len(columns), len(aggregates))) columns, aggregates = qc.get_columns_and_aggregates( qc.EvalAnd( qc.EvalEqual(qe.PositionColumn(), qc.EvalConstant(42)), qc.EvalOr( qc.EvalNot( qc.EvalEqual( qe.DateColumn(), qc.EvalConstant(datetime.date(2014, 1, 1)))), # Aggregation node deep in the tree. qe.Sum([qc.EvalConstant(1)])))) self.assertEqual((2, 1), (len(columns), len(aggregates)))
def test_print_with_filter(self): statement = qc.EvalPrint( qc.EvalFrom( qc.EvalEqual(qe.YearEntryColumn(), qc.EvalConstant(2012)), None, None, None)) oss = io.StringIO() qx.execute_print(statement, self.entries, self.options_map, oss) self.assertEqualEntries( """ 2012-02-02 * "Dinner with Dos" Assets:Bank:Checking 102.00 USD Expenses:Restaurant -102.00 USD """, oss.getvalue())
def test_print_from(self): self.assertCompile( qc.EvalPrint( qc.EvalFrom( qc.EvalEqual(qe.YearEntryColumn(), qc.EvalConstant(2014)), None, None, None)), "PRINT FROM year = 2014;")
def test_compile_EvalEqual(self): c_equal = qc.EvalEqual(qc.EvalConstant(17), qc.EvalConstant(18)) self.assertEqual(bool, c_equal.dtype)