[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