diff --git a/src/backend/postgres/test/test-db.c b/src/backend/postgres/test/test-db.c index a1552ffc93..13b2af7787 100644 --- a/src/backend/postgres/test/test-db.c +++ b/src/backend/postgres/test/test-db.c @@ -420,7 +420,7 @@ test_mode (const char *db_name, const char *mode, add_random_transactions_to_session (session, get_random_int_in_range (10, 20)); - if (!save_db_file (session, db_name, mode)) + if (!save_db_file (session, db_name, "single-update")) return FALSE; session_db = gnc_session_new (); diff --git a/src/engine/Account.c b/src/engine/Account.c index 0f887bac5b..9ed6d3b387 100644 --- a/src/engine/Account.c +++ b/src/engine/Account.c @@ -448,6 +448,104 @@ xaccAccountEqual(Account *aa, Account *ab, gboolean check_guids) return FALSE; } + if (!gnc_numeric_equal (aa->starting_balance, ab->starting_balance)) + { + char *str_a; + char *str_b; + + str_a = gnc_numeric_to_string (aa->starting_balance); + str_b = gnc_numeric_to_string (ab->starting_balance); + + PWARN ("starting balances differ: %s vs %s", str_a, str_b); + + g_free (str_a); + g_free (str_b); + + return FALSE; + } + + if (!gnc_numeric_equal (aa->starting_cleared_balance, + ab->starting_cleared_balance)) + { + char *str_a; + char *str_b; + + str_a = gnc_numeric_to_string (aa->starting_cleared_balance); + str_b = gnc_numeric_to_string (ab->starting_cleared_balance); + + PWARN ("starting cleared balances differ: %s vs %s", str_a, str_b); + + g_free (str_a); + g_free (str_b); + + return FALSE; + } + + if (!gnc_numeric_equal (aa->starting_reconciled_balance, + ab->starting_reconciled_balance)) + { + char *str_a; + char *str_b; + + str_a = gnc_numeric_to_string (aa->starting_reconciled_balance); + str_b = gnc_numeric_to_string (ab->starting_reconciled_balance); + + PWARN ("starting reconciled balances differ: %s vs %s", str_a, str_b); + + g_free (str_a); + g_free (str_b); + + return FALSE; + } + + if (!gnc_numeric_equal (aa->balance, ab->balance)) + { + char *str_a; + char *str_b; + + str_a = gnc_numeric_to_string (aa->balance); + str_b = gnc_numeric_to_string (ab->balance); + + PWARN ("balances differ: %s vs %s", str_a, str_b); + + g_free (str_a); + g_free (str_b); + + return FALSE; + } + + if (!gnc_numeric_equal (aa->cleared_balance, ab->cleared_balance)) + { + char *str_a; + char *str_b; + + str_a = gnc_numeric_to_string (aa->cleared_balance); + str_b = gnc_numeric_to_string (ab->cleared_balance); + + PWARN ("cleared balances differ: %s vs %s", str_a, str_b); + + g_free (str_a); + g_free (str_b); + + return FALSE; + } + + if (!gnc_numeric_equal (aa->reconciled_balance, ab->reconciled_balance)) + { + char *str_a; + char *str_b; + + str_a = gnc_numeric_to_string (aa->reconciled_balance); + str_b = gnc_numeric_to_string (ab->reconciled_balance); + + PWARN ("reconciled balances differ: %s vs %s", str_a, str_b); + + g_free (str_a); + g_free (str_b); + + return FALSE; + } + /* no parent; always compare downwards. */ { diff --git a/src/engine/Transaction.c b/src/engine/Transaction.c index 699335ba82..677b53972c 100644 --- a/src/engine/Transaction.c +++ b/src/engine/Transaction.c @@ -313,6 +313,54 @@ xaccSplitEqual(const Split *sa, const Split *sb, return FALSE; } + if (!gnc_numeric_equal (sa->balance, sb->balance)) + { + char *str_a; + char *str_b; + + str_a = gnc_numeric_to_string (sa->balance); + str_b = gnc_numeric_to_string (sb->balance); + + PWARN ("balances differ: %s vs %s", str_a, str_b); + + g_free (str_a); + g_free (str_b); + + return FALSE; + } + + if (!gnc_numeric_equal (sa->cleared_balance, sb->cleared_balance)) + { + char *str_a; + char *str_b; + + str_a = gnc_numeric_to_string (sa->cleared_balance); + str_b = gnc_numeric_to_string (sb->cleared_balance); + + PWARN ("cleared balances differ: %s vs %s", str_a, str_b); + + g_free (str_a); + g_free (str_b); + + return FALSE; + } + + if (!gnc_numeric_equal (sa->reconciled_balance, sb->reconciled_balance)) + { + char *str_a; + char *str_b; + + str_a = gnc_numeric_to_string (sa->reconciled_balance); + str_b = gnc_numeric_to_string (sb->reconciled_balance); + + PWARN ("reconciled balances differ: %s vs %s", str_a, str_b); + + g_free (str_a); + g_free (str_b); + + return FALSE; + } + if (!xaccTransEqual(sa->parent, sb->parent, check_guids, check_txn_splits)) { PWARN ("transactions differ");