[Gnucash-changes] Last of the Mohicans

Linas Vepstas linas at cvs.gnucash.org
Fri Jul 2 21:17:26 EDT 2004


Log Message:
-----------
Last of the Mohicans

Modified Files:
--------------
    gnucash/src/engine/test:
        test-numeric.c

Revision Data
-------------
Index: test-numeric.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/test/test-numeric.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -Lsrc/engine/test/test-numeric.c -Lsrc/engine/test/test-numeric.c -u -r1.16 -r1.17
--- src/engine/test/test-numeric.c
+++ src/engine/test/test-numeric.c
@@ -639,7 +639,7 @@
 	 */
 	check_binary_op (gnc_numeric_error (GNC_ERROR_OVERFLOW),
 			 gnc_numeric_div(a, b, GNC_DENOM_AUTO,
-					 GNC_HOW_DENOM_EXACT),
+					 GNC_HOW_RND_NEVER | GNC_HOW_DENOM_EXACT),
 			 a, b, "expected %s got %s = %s / %s for div exact");
 
 	check_binary_op (gnc_numeric_create(338441, 1000000),
@@ -671,6 +671,25 @@
 			 gnc_numeric_div(c, d, 82718,
 					 GNC_HOW_DENOM_EXACT|GNC_HOW_RND_NEVER),
 			 c, d, "expected %s got %s = %s / %s for div round");
+
+	/* A simple irreducible ratio, involving negative numbers */
+	gnc_numeric amt_a = gnc_numeric_create (-6005287905LL, 40595);
+	gnc_numeric amt_tot = gnc_numeric_create (-8744187958LL, 40595);
+	gnc_numeric frac = gnc_numeric_div (amt_a, amt_tot,
+                        GNC_DENOM_AUTO, GNC_HOW_DENOM_REDUCE);
+
+	check_binary_op (gnc_numeric_create(6005287905LL, 8744187958LL),
+	                 frac, amt_a, amt_tot, 
+	                 "expected %s got %s = %s / %s for div reduce");
+
+	/* Another overflow-prone condition */
+	gnc_numeric val_tot = gnc_numeric_create (-4280656418LL, 19873);
+	gnc_numeric val_a = gnc_numeric_mul (frac, val_tot,
+                        gnc_numeric_denom(val_tot),
+                        GNC_HOW_RND_ROUND| GNC_HOW_DENOM_EXACT);
+	check_binary_op (gnc_numeric_create(-2939846940LL, 19873),
+	                 val_a, val_tot, frac,
+	                 "expected %s got %s = %s * %s for mult round");
 }
   
 /* ======================================================= */


More information about the gnucash-changes mailing list