static void test_reduce_different_currency() { Expression *two_franc = franc( 2 ); Expression *one_dollar = dollar( 1 ); add_rate( CHF, USD, 2 ); Money *result = reduce( two_franc, USD ); assert_true( equal( result, money_from( one_dollar ) ) ); free_expression( two_franc ); free_expression( one_dollar ); free_money( result ); delete_all_rates(); }
static gchar* make_simple_trans_line (Account *acc, Transaction *trans, Split *split, CsvExportInfo *info) { gboolean t_void = xaccTransGetVoidStatus (trans); gchar *result = begin_trans_string (trans, info); result = add_account_name (result, acc, NULL, TRUE, info); result = add_number (result, trans, info); result = add_description (result, trans, info); result = add_category (result, split, TRUE, info); result = add_reconcile (result, split, info); result = add_amount (result, split, t_void, TRUE, TRANS_SIMPLE, info); result = add_amount (result, split, t_void, FALSE, TRANS_SIMPLE, info); result = add_rate (result, split, t_void, info); return result; }
static void test_mixed_addition() { Expression *five_bucks = dollar( 5 ); Expression *ten_francs = franc( 10 ); Expression *ten_usd = dollar( 10 ); add_rate( CHF, USD, 2 ); Expression *exp = plus( five_bucks, ten_francs ); Money *result = reduce( exp, USD ); assert_true( equal( money_from( ten_usd ), result ) ); free_expression( five_bucks ); free_expression( ten_francs ); free_expression( ten_usd ); free_expression( exp ); free_money( result ); delete_all_rates(); }
static void test_multiple_addition() { Expression *five_bucks = dollar( 5 ); Expression *ten_francs = franc( 10 ); Expression *fifteen_bucks = dollar( 15 ); add_rate( CHF, USD, 2 ); Expression *exp1 = plus( five_bucks, ten_francs ); Expression *exp2 = plus( exp1, five_bucks ); Money *result = reduce( exp2, USD ); assert_true( equal( money_from( fifteen_bucks ), result ) ); free_expression( five_bucks ); free_expression( ten_francs ); free_expression( fifteen_bucks ); free_expression( exp1 ); free_expression( exp2 ); free_money( result ); delete_all_rates(); }