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
This commit is contained in:
Linas Vepstas 2004-07-02 03:00:02 +00:00
parent 063e545fc0
commit 0ccd82473b

View File

@ -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 ();
}