r15473 - gnucash/trunk - Fix the gnc-numeric test because using EXACT means we don't know

Derek Atkins warlord at cvs.gnucash.org
Tue Jan 30 19:13:49 EST 2007


Author: warlord
Date: 2007-01-30 19:13:48 -0500 (Tue, 30 Jan 2007)
New Revision: 15473
Trac: http://svn.gnucash.org/trac/changeset/15473

Modified:
   gnucash/trunk/
   gnucash/trunk/src/engine/test/test-numeric.c
Log:
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.



Property changes on: gnucash/trunk
___________________________________________________________________
Name: svk:merge
   - 3889ce50-311e-0410-a464-f059747ec5d1:/local/gnucash/branches/swig-redo:802
3889ce50-311e-0410-a464-f059747ec5d1:/local/gnucash/trunk:1037
d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/trunk:13991
d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/trunk2:13366
   + 3889ce50-311e-0410-a464-f059747ec5d1:/local/gnucash/branches/swig-redo:802
3889ce50-311e-0410-a464-f059747ec5d1:/local/gnucash/trunk:1037
d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/trunk:14017
d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/trunk2:13366

Modified: gnucash/trunk/src/engine/test/test-numeric.c
===================================================================
--- gnucash/trunk/src/engine/test/test-numeric.c	2007-01-31 00:05:23 UTC (rev 15472)
+++ gnucash/trunk/src/engine/test/test-numeric.c	2007-01-31 00:13:48 UTC (rev 15473)
@@ -78,14 +78,16 @@
 
 /* ======================================================= */
 
-#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 @@
 	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 @@
 		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 @@
 		/* 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");
 



More information about the gnucash-changes mailing list