[Gnucash-changes] work on the rounding tests
Linas Vepstas
linas at cvs.gnucash.org
Sat Jun 26 00:49:17 EDT 2004
Log Message:
-----------
work on the rounding tests
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.6
retrieving revision 1.7
diff -Lsrc/engine/test/test-numeric.c -Lsrc/engine/test/test-numeric.c -u -r1.6 -r1.7
--- src/engine/test/test-numeric.c
+++ src/engine/test/test-numeric.c
@@ -266,33 +266,62 @@
static void
check_rounding (void)
{
-#if 0
- printf("7/16 as 100ths (floor): %s\n",
- gnc_numeric_print(gnc_numeric_convert(gnc_numeric_create(7, 16),
- 100, GNC_RND_FLOOR)));
- printf("7/16 as 100ths (ceil): %s\n",
- gnc_numeric_print(gnc_numeric_convert(gnc_numeric_create(7, 16),
- 100, GNC_RND_CEIL)));
- printf("7/16 as 100ths (trunc): %s\n",
- gnc_numeric_print(gnc_numeric_convert(gnc_numeric_create(7, 16),
- 100, GNC_RND_TRUNC)));
- printf("7/16 as 100ths (round): %s\n",
- gnc_numeric_print(gnc_numeric_convert(gnc_numeric_create(7, 16),
- 100, GNC_RND_ROUND)));
-
- printf("1511/1000 as 1/100 (round): %s\n",
- gnc_numeric_print(gnc_numeric_convert(gnc_numeric_create(1511, 1000),
- 100, GNC_RND_ROUND)));
- printf("1516/1000 as 1/100 (round): %s\n",
- gnc_numeric_print(gnc_numeric_convert(gnc_numeric_create(1516, 1000),
- 100, GNC_RND_ROUND)));
- printf("1515/1000 as 1/100 (round): %s\n",
- gnc_numeric_print(gnc_numeric_convert(gnc_numeric_create(1515, 1000),
- 100, GNC_RND_ROUND)));
- printf("1525/1000 as 1/100 (round): %s\n",
- gnc_numeric_print(gnc_numeric_convert(gnc_numeric_create(1525, 1000),
- 100, GNC_RND_ROUND)));
-#endif
+ gnc_numeric val;
+
+ val = gnc_numeric_create(7, 16);
+ check_unary_op (gnc_numeric_eq,
+ gnc_numeric_create (43,100),
+ gnc_numeric_convert (val, 100, GNC_RND_FLOOR),
+ val, "expected %s = %s = (%s as 100th's floor)");
+ check_unary_op (gnc_numeric_eq,
+ gnc_numeric_create (44,100),
+ gnc_numeric_convert (val, 100, GNC_RND_CEIL),
+ val, "expected %s = %s = (%s as 100th's ceiling)");
+ check_unary_op (gnc_numeric_eq,
+ gnc_numeric_create (43,100),
+ gnc_numeric_convert (val, 100, GNC_RND_TRUNC),
+ val, "expected %s = %s = (%s as 100th's trunc)");
+ check_unary_op (gnc_numeric_eq,
+ gnc_numeric_create (44,100),
+ gnc_numeric_convert (val, 100, GNC_RND_ROUND),
+ val, "expected %s = %s = (%s as 100th's round)");
+
+ val = gnc_numeric_create(1511, 1000);
+ check_unary_op (gnc_numeric_eq,
+ gnc_numeric_create (151,100),
+ gnc_numeric_convert (val, 100, GNC_RND_ROUND),
+ val, "expected %s = %s = (%s as 100th's round)");
+
+ val = gnc_numeric_create(1516, 1000);
+ check_unary_op (gnc_numeric_eq,
+ gnc_numeric_create (152,100),
+ gnc_numeric_convert (val, 100, GNC_RND_ROUND),
+ val, "expected %s = %s = (%s as 100th's round)");
+
+ /* Half-values always get rounded to nearest even number */
+ val = gnc_numeric_create(1515, 1000);
+ check_unary_op (gnc_numeric_eq,
+ gnc_numeric_create (152,100),
+ gnc_numeric_convert (val, 100, GNC_RND_ROUND),
+ val, "expected %s = %s = (%s as 100th's round)");
+
+ val = gnc_numeric_create(1525, 1000);
+ check_unary_op (gnc_numeric_eq,
+ gnc_numeric_create (152,100),
+ gnc_numeric_convert (val, 100, GNC_RND_ROUND),
+ val, "expected %s = %s = (%s as 100th's round)");
+
+ val = gnc_numeric_create(1535, 1000);
+ check_unary_op (gnc_numeric_eq,
+ gnc_numeric_create (154,100),
+ gnc_numeric_convert (val, 100, GNC_RND_ROUND),
+ val, "expected %s = %s = (%s as 100th's round)");
+
+ val = gnc_numeric_create(1545, 1000);
+ check_unary_op (gnc_numeric_eq,
+ gnc_numeric_create (154,100),
+ gnc_numeric_convert (val, 100, GNC_RND_ROUND),
+ val, "expected %s = %s = (%s as 100th's round)");
}
static void
More information about the gnucash-changes
mailing list