From 0ccd82473bba048ee7b468c4fbf385a936a88d3b Mon Sep 17 00:00:00 2001 From: Linas Vepstas Date: Fri, 2 Jul 2004 03:00:02 +0000 Subject: [PATCH] adding a negative number to zero flips its sign! Oops!! Add a test to make sure it never happens again. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@10128 57a11ea4-9604-0410-9ed3-97b8803252fd --- src/engine/test/test-numeric.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/engine/test/test-numeric.c b/src/engine/test/test-numeric.c index 6d479f3e06..a6dab65c35 100644 --- a/src/engine/test/test-numeric.c +++ b/src/engine/test/test-numeric.c @@ -336,6 +336,26 @@ check_double (void) /* ======================================================= */ +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) { @@ -380,6 +400,12 @@ check_add_subtract (void) 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 @@ run_test (void) check_equality_operator (); check_rounding(); check_double(); + check_neg(); check_add_subtract(); check_mult_div (); }