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
zzzoldfeatures/module-cleanup
Derek Atkins 20 years ago
parent f81aa515fd
commit b6be683d93

@ -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");

Loading…
Cancel
Save