[Gnucash-changes] clean up test generator to produce
self-consistent data.
Linas Vepstas
linas at cvs.gnucash.org
Mon Jul 5 23:40:57 EDT 2004
Log Message:
-----------
clean up test generator to produce self-consistent data.
I make these changes with some trepidation, since this puts
a whole lot less stress on the 'scrub' infrastructure.
Modified Files:
--------------
gnucash/src/engine/test-core:
test-engine-stuff.c
Revision Data
-------------
Index: test-engine-stuff.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/test-core/test-engine-stuff.c,v
retrieving revision 1.70
retrieving revision 1.71
diff -Lsrc/engine/test-core/test-engine-stuff.c -Lsrc/engine/test-core/test-engine-stuff.c -u -r1.70 -r1.71
--- src/engine/test-core/test-engine-stuff.c
+++ src/engine/test-core/test-engine-stuff.c
@@ -1005,24 +1005,47 @@
static void
add_random_splits(QofBook *book, Transaction *trn, GList *account_list)
{
- Account *account;
+ Account *acc, *bcc;
Split *s;
+ /* Gotta have at least two different accounts */
+ if (1 >= g_list_length (account_list)) return;
+
/* Set up two splits whose values really are opposites. */
gnc_commodity *com = xaccTransGetCurrency (trn);
int scu = gnc_commodity_get_fraction(com);
gnc_numeric num = get_random_gnc_numeric();
num = gnc_numeric_convert (num, scu, GNC_HOW_RND_ROUND);
- account = get_random_list_element (account_list);
- s = get_random_split(book, account);
+ acc = get_random_list_element (account_list);
+ s = get_random_split(book, acc);
xaccTransAppendSplit(trn, s);
xaccSplitSetValue(s, num);
- account = get_random_list_element (account_list);
- s = get_random_split(book, account);
+ if (gnc_commodity_equal (xaccTransGetCurrency(trn),
+ xaccAccountGetCommodity(acc)))
+ {
+ xaccSplitSetAmount(s, num);
+ }
+
+ /* Make sure that each side of the transaction is in
+ * a different account; otherwise get weirdness in lot
+ * calculcations. ... Hmm maybe should fix lots in
+ * this case? */
+ do {
+ bcc = get_random_list_element (account_list);
+ } while (bcc == acc);
+
+ s = get_random_split(book, bcc);
xaccTransAppendSplit(trn, s);
xaccSplitSetValue(s, gnc_numeric_neg(num));
+
+ if (gnc_commodity_equal (xaccTransGetCurrency(trn),
+ xaccAccountGetCommodity(bcc)))
+ {
+ xaccSplitSetAmount(s, num);
+ }
+
}
static void
More information about the gnucash-changes
mailing list