mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
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:
parent
063e545fc0
commit
0ccd82473b
@ -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
|
static void
|
||||||
check_add_subtract (void)
|
check_add_subtract (void)
|
||||||
{
|
{
|
||||||
@ -380,6 +400,12 @@ check_add_subtract (void)
|
|||||||
gnc_numeric_sub(a, b, 100, GNC_HOW_RND_ROUND),
|
gnc_numeric_sub(a, b, 100, GNC_HOW_RND_ROUND),
|
||||||
a, b, "expected %s got %s = %s - %s for sub 100ths (banker's)");
|
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
|
#if CHECK_ERRORS_TOO
|
||||||
gnc_numeric c;
|
gnc_numeric c;
|
||||||
c = gnc_numeric_add_with_error(a, b, 100, GNC_HOW_RND_ROUND, &err);
|
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_equality_operator ();
|
||||||
check_rounding();
|
check_rounding();
|
||||||
check_double();
|
check_double();
|
||||||
|
check_neg();
|
||||||
check_add_subtract();
|
check_add_subtract();
|
||||||
check_mult_div ();
|
check_mult_div ();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user