From b6be683d9386ca4ffe9965ef335a6647c5c3dea1 Mon Sep 17 00:00:00 2001 From: Derek Atkins Date: Wed, 31 Jan 2007 00:13:48 +0000 Subject: [PATCH] Fix the gnc-numeric test because using EXACT means we don't know what the denominator is going to be, so if it gets ints a state where it's NOT overflowing then you won't get a denominator of 1 like the tests assumed. So use gnc_numeric_equal() in the few tests where that's an issue. This should fix the test on Win32. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@15473 57a11ea4-9604-0410-9ed3-97b8803252fd --- src/engine/test/test-numeric.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/engine/test/test-numeric.c b/src/engine/test/test-numeric.c index c821dc1417..1f640f2142 100644 --- a/src/engine/test/test-numeric.c +++ b/src/engine/test/test-numeric.c @@ -78,14 +78,16 @@ check_unary_op_r (gboolean (*eqtest) (gnc_numeric, gnc_numeric), /* ======================================================= */ -#define check_binary_op(ex,a,ia,ib,e) check_binary_op_r(ex,a,ia,ib,e,__LINE__) +#define check_binary_op(ex,a,ia,ib,e) check_binary_op_r(ex,a,ia,ib,e,__LINE__,gnc_numeric_eq) +#define check_binary_op_equal(ex,a,ia,ib,e) check_binary_op_r(ex,a,ia,ib,e,__LINE__,gnc_numeric_equal) static void check_binary_op_r (gnc_numeric expected, gnc_numeric actual, gnc_numeric input_a, gnc_numeric input_b, const char * errmsg, - int line) + int line, + gboolean (*eq)(gnc_numeric, gnc_numeric)) { char *e = gnc_numeric_print (expected); char *r = gnc_numeric_print (actual); @@ -93,7 +95,7 @@ check_binary_op_r (gnc_numeric expected, char *b = gnc_numeric_print (input_b); char *str = g_strdup_printf (errmsg, e,r,a,b); - do_test_call (gnc_numeric_eq(expected, actual), str, __FILE__, line); + do_test_call ((eq)(expected, actual), str, __FILE__, line); g_free (a); g_free (b); @@ -638,7 +640,7 @@ check_mult_div (void) a = gnc_numeric_create(na, deno); b = gnc_numeric_create(nb, deno); - check_binary_op (gnc_numeric_create(ne,1), + check_binary_op_equal (gnc_numeric_create(ne,1), gnc_numeric_mul(a, b, GNC_DENOM_AUTO, GNC_HOW_DENOM_EXACT), a, b, "expected %s got %s = %s * %s for mult exact"); @@ -655,7 +657,7 @@ check_mult_div (void) /* Do some hokey random 128-bit division too */ b = gnc_numeric_create(deno, nb); - check_binary_op (gnc_numeric_create(ne,1), + check_binary_op_equal (gnc_numeric_create(ne,1), gnc_numeric_div(a, b, GNC_DENOM_AUTO, GNC_HOW_DENOM_EXACT), a, b, "expected %s got %s = %s / %s for div exact");