[Gnucash-changes] adding a negative number to zero flips its sign!
Oops!! Add a test to
Linas Vepstas
linas at cvs.gnucash.org
Thu Jul 1 23:00:03 EDT 2004
Log Message:
-----------
adding a negative number to zero flips its sign! Oops!!
Add a test to make sure it never happens again.
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.14
retrieving revision 1.15
diff -Lsrc/engine/test/test-numeric.c -Lsrc/engine/test/test-numeric.c -u -r1.14 -r1.15
--- src/engine/test/test-numeric.c
+++ src/engine/test/test-numeric.c
@@ -337,6 +337,26 @@
/* ======================================================= */
static void
+check_neg (void)
+{
+ gnc_numeric a = gnc_numeric_create(2, 6);
+ gnc_numeric b = gnc_numeric_create(1, 4);
+ gnc_numeric c = gnc_numeric_neg (a);
+ gnc_numeric d = gnc_numeric_neg (b);
+
+ check_unary_op (gnc_numeric_eq,
+ gnc_numeric_create (-2,6), c,
+ a, "expected %s = %s = -(%s)");
+
+ check_unary_op (gnc_numeric_eq,
+ gnc_numeric_create (-1,4), d,
+ b, "expected %s = %s = -(%s)");
+
+}
+
+/* ======================================================= */
+
+static void
check_add_subtract (void)
{
gnc_numeric a = gnc_numeric_create(2, 6);
@@ -380,6 +400,12 @@
gnc_numeric_sub(a, b, 100, GNC_HOW_RND_ROUND),
a, b, "expected %s got %s = %s - %s for sub 100ths (banker's)");
+ /* This test has failed before */
+ gnc_numeric c = gnc_numeric_neg (b);
+ gnc_numeric z = gnc_numeric_zero();
+ check_binary_op (c, gnc_numeric_add_fixed(z,c),
+ z, c, "expected %s got %s = %s + %s for add fixed");
+
#if CHECK_ERRORS_TOO
gnc_numeric c;
c = gnc_numeric_add_with_error(a, b, 100, GNC_HOW_RND_ROUND, &err);
@@ -608,6 +634,7 @@
check_equality_operator ();
check_rounding();
check_double();
+ check_neg();
check_add_subtract();
check_mult_div ();
}
More information about the gnucash-changes
mailing list