From d861c65020a018d7d690782a599f4d23fab0407f Mon Sep 17 00:00:00 2001 From: Christopher Lam Date: Sun, 21 Nov 2021 23:25:18 +0800 Subject: [PATCH] [test-engine-extras] don't create splits of opposing amt/value signs Splits' value and amount should never be of opposite signs. Fix test book which had created this incorrect value/amount pair. Strengthen env-create-multisplit-transaction to disallow test book errors. --- bindings/guile/test/test-engine-extras.scm | 6 ++++++ .../report/reports/standard/test/test-ifrs-cost-basis.scm | 2 +- gnucash/report/test/test-commodity-utils.scm | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/bindings/guile/test/test-engine-extras.scm b/bindings/guile/test/test-engine-extras.scm index b873e0d155..7b12a18d8e 100644 --- a/bindings/guile/test/test-engine-extras.scm +++ b/bindings/guile/test/test-engine-extras.scm @@ -223,6 +223,9 @@ #:memo memo #:notes notes)) +(define (opposite-signs? a b) + (< (* a b) 0)) + ;; creates multisplit transaction. ;; ;; input: DD/MM/YY - posting date of transaction @@ -262,6 +265,9 @@ (action (and (> (vector-length split) 3) (vector-ref split 3))) (newsplit (xaccMallocSplit book))) + (when (opposite-signs? val amt) + (error "env-create-multisplit-transaction error for" DD '/ MM '/ YY + 'opposing-signs: 'val val 'amt amt)) (xaccSplitSetParent newsplit txn) (xaccSplitSetAccount newsplit acc) (xaccSplitSetValue newsplit val) diff --git a/gnucash/report/reports/standard/test/test-ifrs-cost-basis.scm b/gnucash/report/reports/standard/test/test-ifrs-cost-basis.scm index fee392dc3f..a37ed1d347 100644 --- a/gnucash/report/reports/standard/test/test-ifrs-cost-basis.scm +++ b/gnucash/report/reports/standard/test/test-ifrs-cost-basis.scm @@ -139,7 +139,7 @@ (env-create-multisplit-transaction env 16 04 2020 - (list (vector usd-cash 2500 -2500) + (list (vector usd-cash 2500 2500) (vector spy -2500 0 "Buy") ) #:description "Return of Capital" diff --git a/gnucash/report/test/test-commodity-utils.scm b/gnucash/report/test/test-commodity-utils.scm index 89b40454a3..a8e609906e 100644 --- a/gnucash/report/test/test-commodity-utils.scm +++ b/gnucash/report/test/test-commodity-utils.scm @@ -167,7 +167,7 @@ #:description "Buy MSFT 1500") ;;1500 @ $28.11 (env-transfer-foreign env 20 01 2012 checking-dem dmlr-a 1500 80 #:description "Buy DMLR 80") ;;80 @ DM1500.00 - (env-transfer-foreign env 20 02 2012 checking-dem dmlr-a -1610 80 + (env-transfer-foreign env 20 02 2012 checking-dem dmlr-a -1610 -80 #:description "Sell DMLR 80") ;;80 @ DM1610.00 (env-transfer-foreign env 20 02 2012 capgain-dem dmlr-a 110 0 #:description "DMLR 80 G/L") ;;80 @ DM1610.00