def test_expr_function_arity(self): # Compile with the correct number of arguments. qc.compile_expression(qp.Function('sum', [qp.Column('number')]), qe.TargetsEnvironment()) # Compile with an incorrect number of arguments. with self.assertRaises(qc.CompilationError): qc.compile_expression(qp.Function('sum', [qp.Column('date'), qp.Column('account')]), qe.TargetsEnvironment())
def get_matching_entries(entries, options_map, query): query_text = 'SELECT * ' + query parser = query_parser.Parser() parsed_query = parser.parse(query_text) c_from = None if parsed_query.from_clause: c_from = query_compile.compile_from(parsed_query.from_clause, query_env.FilterEntriesEnvironment()) c_where = None if parsed_query.where_clause: c_where = query_compile.compile_expression(parsed_query.where_clause, query_env.FilterPostingsEnvironment()) # Figure out if we need to compute balance. balance = None if c_where and query_execute.uses_balance_column(c_where): balance = inventory.Inventory() context = query_execute.RowContext() context.balance = balance # Initialize some global properties for use by some of the accessors. context.options_map = options_map context.account_types = options.get_account_types(options_map) context.open_close_map = getters.get_account_open_close(entries) #context.commodity_map = getters.get_commodity_map(entries) context.price_map = prices.build_price_map(entries) if c_from is not None: filtered_entries = query_execute.filter_entries(c_from, entries, options_map) else: filtered_entries = entries return filtered_entries
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_expr_constant(self): self.assertEqual( qc.EvalConstant(D(17)), qc.compile_expression(qp.Constant(D(17)), qe.TargetsEnvironment()))
def test_expr_unaryop(self): self.assertEqual( qc.EvalNot(qe.AccountColumn()), qc.compile_expression(qp.Not(qp.Column('account')), qe.TargetsEnvironment()))
def test_expr_function(self): self.assertEqual( qe.SumPosition([qe.PositionColumn()]), qc.compile_expression(qp.Function('sum', [qp.Column('position')]), qe.TargetsEnvironment()))
def test_expr_column(self): self.assertEqual( qe.FilenameColumn(), qc.compile_expression(qp.Column('filename'), qe.TargetsEnvironment()))
def test_expr_invalid(self): with self.assertRaises(qc.CompilationError): qc.compile_expression(qp.Column('invalid'), qe.TargetsEnvironment())