get test-query to fail consistently.

PERR() when xaccTransGetSharePrice() overflows.
Loop test-query, and start the rng to fail consistently.


git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@10156 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Derek Atkins 2004-07-04 17:10:38 +00:00
parent ae6b1c475e
commit 2291561fbf
2 changed files with 22 additions and 3 deletions

View File

@ -2805,7 +2805,7 @@ xaccSplitGetValue (const Split * cs)
gnc_numeric
xaccSplitGetSharePrice (const Split * split)
{
gnc_numeric amt, val;
gnc_numeric amt, val, price;
if(!split)
{
return gnc_numeric_create(1, 1);
@ -2826,10 +2826,22 @@ xaccSplitGetSharePrice (const Split * split)
}
return gnc_numeric_create(0, 1);
}
return gnc_numeric_div(val, amt,
price = gnc_numeric_div(val, amt,
GNC_DENOM_AUTO,
GNC_HOW_DENOM_SIGFIGS(PRICE_SIGFIGS) |
GNC_HOW_RND_ROUND);
/* During random checks we can get some very weird prices. Let's
* handle some overflow and other error conditions by returning
* zero. But still print an error to let us know it happened.
*/
if (gnc_numeric_check(price)) {
PERR("Computing Shares Price Failed (%d): [ %lld / %lld ] / [ %lld / %lld ]",
gnc_numeric_check(price), val.num, val.denom, amt.num, amt.denom);
return gnc_numeric_create(0,1);
}
return price;
}
/********************************************************************\

View File

@ -66,12 +66,19 @@ run_test (void)
static void
main_helper (void *closure, int argc, char **argv)
{
int i;
gnc_module_load("gnucash/engine", 0);
g_log_set_always_fatal( G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_WARNING );
xaccLogDisable ();
/* Always start from the same random seed so we fail consistently */
srand(0);
/* Loop the test. */
for (i=0; i < 10; i++)
run_test ();
success("queries seem to work");