mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
[test-balsheet-pnl] add more tests
1. modify pricedb to awkward numbers -- this ensures the balance-sheet reports are tested with higher precision 2. tests exchange rate for multicol pnl
This commit is contained in:
parent
ca44425149
commit
5f64c4c6e4
@ -146,17 +146,17 @@
|
||||
|
||||
;; further prices into pricedb
|
||||
;; GBP = 1.50 to 1.90 USD
|
||||
(gnc-pricedb-create USD GBP (gnc-dmy2time64 1 1 1971) 15/10)
|
||||
(gnc-pricedb-create USD GBP (gnc-dmy2time64 1 1 1972) 16/10)
|
||||
(gnc-pricedb-create USD GBP (gnc-dmy2time64 1 1 1973) 17/10)
|
||||
(gnc-pricedb-create USD GBP (gnc-dmy2time64 1 1 1974) 18/10)
|
||||
(gnc-pricedb-create USD GBP (gnc-dmy2time64 1 1 1975) 19/10)
|
||||
(gnc-pricedb-create USD GBP (gnc-dmy2time64 1 1 1971) 150/101)
|
||||
(gnc-pricedb-create USD GBP (gnc-dmy2time64 1 1 1972) 169/102)
|
||||
(gnc-pricedb-create USD GBP (gnc-dmy2time64 1 1 1973) 178/103)
|
||||
(gnc-pricedb-create USD GBP (gnc-dmy2time64 1 1 1974) 187/104)
|
||||
(gnc-pricedb-create USD GBP (gnc-dmy2time64 1 1 1975) 196/105)
|
||||
;; FUND = 300 to 500 USD
|
||||
(gnc-pricedb-create USD FUNDS (gnc-dmy2time64 1 1 1971) 300)
|
||||
(gnc-pricedb-create USD FUNDS (gnc-dmy2time64 1 1 1972) 350)
|
||||
(gnc-pricedb-create USD FUNDS (gnc-dmy2time64 1 1 1973) 400)
|
||||
(gnc-pricedb-create USD FUNDS (gnc-dmy2time64 1 1 1974) 450)
|
||||
(gnc-pricedb-create USD FUNDS (gnc-dmy2time64 1 1 1975) 500)
|
||||
(gnc-pricedb-create USD FUNDS (gnc-dmy2time64 1 1 1971) 30001/100)
|
||||
(gnc-pricedb-create USD FUNDS (gnc-dmy2time64 1 1 1972) 35002/101)
|
||||
(gnc-pricedb-create USD FUNDS (gnc-dmy2time64 1 1 1973) 40003/102)
|
||||
(gnc-pricedb-create USD FUNDS (gnc-dmy2time64 1 1 1974) 45004/103)
|
||||
(gnc-pricedb-create USD FUNDS (gnc-dmy2time64 1 1 1975) 50005/104)
|
||||
|
||||
;; a couple INCOME transactions, a decade later
|
||||
(env-transfer env 01 01 1980 income bank1current 250)
|
||||
@ -174,14 +174,14 @@
|
||||
(let* ((balance-sheet-options (default-balsheet-testing-options))
|
||||
(sxml (options->sxml balance-sheet-uuid balance-sheet-options "balsheet-default")))
|
||||
|
||||
(test-equal "total assets = $116,009"
|
||||
(list "$116,009.00")
|
||||
(test-equal "total assets = $116,006.33"
|
||||
(list "$116,006.33")
|
||||
(sxml->table-row-col sxml 1 15 6))
|
||||
(test-equal "total liabilities = $9,500.00"
|
||||
(list "$9,500.00")
|
||||
(sxml->table-row-col sxml 1 23 6))
|
||||
(test-equal "total equity = $106,509.00"
|
||||
(list "$106,509.00")
|
||||
(test-equal "total equity = $106,506.33"
|
||||
(list "$106,506.33")
|
||||
(sxml->table-row-col sxml 1 28 6))
|
||||
|
||||
(set-option! balance-sheet-options "Commodities" "Price Source" 'weighted-average)
|
||||
@ -198,14 +198,14 @@
|
||||
|
||||
(set-option! balance-sheet-options "Commodities" "Price Source" 'pricedb-nearest)
|
||||
(let ((sxml (options->sxml balance-sheet-uuid balance-sheet-options "balsheet-pricedb-nearest")))
|
||||
(test-equal "pricedb-nearest assets = $116,009"
|
||||
(list "$116,009.00")
|
||||
(test-equal "pricedb-nearest assets = $116,006.33"
|
||||
(list "$116,006.33")
|
||||
(sxml->table-row-col sxml 1 15 6)))
|
||||
|
||||
(set-option! balance-sheet-options "Commodities" "Price Source" 'pricedb-latest)
|
||||
(let ((sxml (options->sxml balance-sheet-uuid balance-sheet-options "balsheet-pricedb-latest")))
|
||||
(test-equal "pricedb-latest assets = $122,049"
|
||||
(list "$122,049.00")
|
||||
(test-equal "pricedb-latest assets = $121,473.52"
|
||||
(list "$121,473.52")
|
||||
(sxml->table-row-col sxml 1 15 6)))
|
||||
|
||||
;; set multilevel subtotal style
|
||||
@ -240,11 +240,11 @@
|
||||
(test-equal "multilevel. broker = $2,000.00"
|
||||
(list "$2,000.00")
|
||||
(sxml->table-row-col sxml 1 11 4))
|
||||
(test-equal "multilevel. funds = $15,000.00"
|
||||
(list "30 FUNDS" "$15,000.00" "$15,000.00")
|
||||
(test-equal "multilevel. funds = $14,424.52"
|
||||
(list "30 FUNDS" "$14,424.52" "$14,424.52")
|
||||
(sxml->table-row-col sxml 1 12 3))
|
||||
(test-equal "multilevel. total broker = $17,000.00"
|
||||
(list "$17,000.00")
|
||||
(test-equal "multilevel. total broker = $16,424.52"
|
||||
(list "$16,424.52")
|
||||
(sxml->table-row-col sxml 1 13 4))
|
||||
(test-equal "multilevel. foreign = $0.00"
|
||||
(list "$0.00")
|
||||
@ -258,25 +258,25 @@
|
||||
(test-equal "multilevel. house = $100,000"
|
||||
(list "$100,000.00")
|
||||
(sxml->table-row-col sxml 1 17 4))
|
||||
(test-equal "multilevel. total asset = $122,049"
|
||||
(list "$122,049.00")
|
||||
(test-equal "multilevel. total asset = $121,473.52"
|
||||
(list "$121,473.52")
|
||||
(sxml->table-row-col sxml 1 18 5))
|
||||
(test-equal "multilevel. total root = $122,049"
|
||||
(list "$122,049.00")
|
||||
(test-equal "multilevel. total root = $121,473.52"
|
||||
(list "$121,473.52")
|
||||
(sxml->table-row-col sxml 1 19 6))
|
||||
(test-equal "multilevel. total assets = $122,049"
|
||||
(list "$122,049.00")
|
||||
(test-equal "multilevel. total assets = $121,473.52"
|
||||
(list "$121,473.52")
|
||||
(sxml->table-row-col sxml 1 20 6)))
|
||||
|
||||
;; set recursive-subtotal subtotal style
|
||||
(set-option! balance-sheet-options "Display" "Parent account balances" 'recursive-bal)
|
||||
(set-option! balance-sheet-options "Display" "Parent account subtotals" 'f)
|
||||
(let ((sxml (options->sxml balance-sheet-uuid balance-sheet-options "balsheet-recursive")))
|
||||
(test-equal "recursive. root = $760+15000+104600"
|
||||
'("#200.00" "$340.00" "30 FUNDS" "$15,000.00" "$106,709.00" "$106,709.00")
|
||||
(test-equal "recursive. root = $760+14424.52+106709"
|
||||
'("#200.00" "$340.00" "30 FUNDS" "$14,424.52" "$106,709.00" "$106,709.00")
|
||||
(sxml->table-row-col sxml 1 3 6))
|
||||
(test-equal "recursive. assets = $760+15000+104600"
|
||||
'("#200.00" "$340.00" "30 FUNDS" "$15,000.00" "$106,709.00" "$106,709.00")
|
||||
(test-equal "recursive. assets = $760+14424.52+106709"
|
||||
'("#200.00" "$340.00" "30 FUNDS" "$14,424.52" "$106,709.00" "$106,709.00")
|
||||
(sxml->table-row-col sxml 1 4 5))
|
||||
(test-equal "recursive. bank1 = $4,709.00"
|
||||
(list "$4,709.00")
|
||||
@ -293,11 +293,11 @@
|
||||
(test-equal "recursive. savings = $100.00"
|
||||
(list "$100.00")
|
||||
(sxml->table-row-col sxml 1 9 3))
|
||||
(test-equal "recursive. broker = $15000+2000.00"
|
||||
'("30 FUNDS" "$15,000.00" "$2,000.00" "$2,000.00")
|
||||
(test-equal "recursive. broker = $14424.52+$2000.00"
|
||||
'("30 FUNDS" "$14,424.52" "$2,000.00" "$2,000.00")
|
||||
(sxml->table-row-col sxml 1 10 4))
|
||||
(test-equal "recursive. funds = $15,000.00"
|
||||
(list "30 FUNDS" "$15,000.00" "$15,000.00")
|
||||
(test-equal "recursive. funds = $14424.52"
|
||||
'("30 FUNDS" "$14,424.52" "$14,424.52")
|
||||
(sxml->table-row-col sxml 1 11 3))
|
||||
(test-equal "recursive. foreign = $340.00"
|
||||
(list "#200.00" "$340.00")
|
||||
@ -308,15 +308,15 @@
|
||||
(test-equal "recursive. house = $100,000"
|
||||
(list "$100,000.00")
|
||||
(sxml->table-row-col sxml 1 14 4))
|
||||
(test-equal "recursive. total assets = $122,049.00"
|
||||
(list "$122,049.00")
|
||||
(test-equal "recursive. total assets = $121,473.52"
|
||||
'("$121,473.52")
|
||||
(sxml->table-row-col sxml 1 15 6)))
|
||||
|
||||
(set-option! balance-sheet-options "Commodities" "Show Foreign Currencies" #f)
|
||||
(set-option! balance-sheet-options "Commodities" "Show Exchange Rates" #f)
|
||||
(let ((sxml (options->sxml balance-sheet-uuid balance-sheet-options "balsheet-disable show-fcur show-rates")))
|
||||
(test-equal "show-fcur disabled"
|
||||
(list "$122,049.00")
|
||||
(list "$121,473.52")
|
||||
(sxml->table-row-col sxml 1 3 6))
|
||||
(test-equal "show-rates disabled"
|
||||
'()
|
||||
@ -326,10 +326,10 @@
|
||||
(set-option! balance-sheet-options "Commodities" "Show Exchange Rates" #t)
|
||||
(let ((sxml (options->sxml balance-sheet-uuid balance-sheet-options "balsheet-enable show-fcur show-rates")))
|
||||
(test-equal "show-fcur enabled"
|
||||
'("#200.00" "$340.00" "30 FUNDS" "$15,000.00" "$106,709.00" "$106,709.00")
|
||||
'("#200.00" "$340.00" "30 FUNDS" "$14,424.52" "$106,709.00" "$106,709.00")
|
||||
(sxml->table-row-col sxml 1 3 6))
|
||||
(test-equal "show-rates enabled"
|
||||
'("#1.00" "$1.7000" "1 FUNDS" "$500.0000")
|
||||
'("#1.00" "$1.7000" "1 FUNDS" "$480 + 85/104")
|
||||
(sxml->table-row-col sxml 2 #f #f)))
|
||||
|
||||
;;make-multilevel
|
||||
@ -525,20 +525,20 @@
|
||||
"1 FUNDS $200.0000")
|
||||
(sxml->table-row-col sxml 1 #f 2))
|
||||
(test-equal "bal-1/1/71"
|
||||
'("01/01/71" "$116,009.00" "$116,009.00" "$4,709.00" "$2,000.00"
|
||||
"$2,609.00" "$0.00" "$100.00" "$11,000.00" "$2,000.00" "$9,000.00"
|
||||
"30 FUNDS " "$300.00" "$300.00" "#200.00 " "$100,000.00" "$116,009.00"
|
||||
'("01/01/71" "$116,006.33" "$116,006.33" "$4,709.00" "$2,000.00"
|
||||
"$2,609.00" "$0.00" "$100.00" "$11,000.30" "$2,000.00" "$9,000.30"
|
||||
"30 FUNDS " "$297.03" "$297.03" "#200.00 " "$100,000.00" "$116,006.33"
|
||||
"$9,500.00" "$9,500.00" "$500.00" "$9,000.00" "$9,500.00" "$103,600.00"
|
||||
"$2,909.00" "$0.00" "$106,509.00" "$116,009.00" "#1.00 $1.5000"
|
||||
"1 FUNDS $300.0000")
|
||||
"$2,906.33" "$0.00" "$106,506.33" "$116,006.33" "#1.00 $1.4900"
|
||||
"1 FUNDS $300.0100")
|
||||
(sxml->table-row-col sxml 1 #f 3))
|
||||
(test-equal "bal-1/1/72"
|
||||
'("01/01/72" "$117,529.00" "$117,529.00" "$4,709.00" "$2,000.00"
|
||||
"$2,609.00" "$0.00" "$100.00" "$12,500.00" "$2,000.00" "$10,500.00"
|
||||
"30 FUNDS " "$320.00" "$320.00" "#200.00 " "$100,000.00" "$117,529.00"
|
||||
'("01/01/72" "$117,437.00" "$117,437.00" "$4,709.00" "$2,000.00"
|
||||
"$2,609.00" "$0.00" "$100.00" "$12,396.63" "$2,000.00" "$10,396.63"
|
||||
"30 FUNDS " "$331.37" "$331.37" "#200.00 " "$100,000.00" "$117,437.00"
|
||||
"$9,500.00" "$9,500.00" "$500.00" "$9,000.00" "$9,500.00" "$103,600.00"
|
||||
"$4,429.00" "$0.00" "$108,029.00" "$117,529.00" "#1.00 $1.6000"
|
||||
"1 FUNDS $350.0000")
|
||||
"$4,337.00" "$0.00" "$107,937.00" "$117,437.00" "#1.00 $1.6600"
|
||||
"1 FUNDS $346.5500")
|
||||
(sxml->table-row-col sxml 1 #f 4)))
|
||||
|
||||
(set-option! multi-bs-options "General" "Period order is most recent first" #t)
|
||||
@ -557,11 +557,12 @@
|
||||
(let ((sxml (options->sxml multicol-balsheet-uuid multi-bs-options
|
||||
"multicol-balsheet-retained")))
|
||||
(test-equal "bal-1/3/80"
|
||||
'("$123,319.00" "$123,319.00" "$5,129.00" "$2,000.00" "$3,029.00" "$0.00"
|
||||
"$100.00" "$17,000.00" "$2,000.00" "$15,000.00" "30 FUNDS " "$1,190.00"
|
||||
"$1,190.00" "#700.00 " "$100,000.00" "$123,319.00" "$9,500.00" "$9,500.00"
|
||||
"$500.00" "$9,000.00" "$9,500.00" "$103,600.00" "$8,949.00" "$1,270.00"
|
||||
"$113,819.00" "$123,319.00" "#1.00 $1.7000" "1 FUNDS $500.0000")
|
||||
'("$122,743.52" "$122,743.52" "$5,129.00" "$2,000.00" "$3,029.00"
|
||||
"$0.00" "$100.00" "$16,424.52" "$2,000.00" "$14,424.52" "30 FUNDS "
|
||||
"$1,190.00" "$1,190.00" "#700.00 " "$100,000.00" "$122,743.52"
|
||||
"$9,500.00" "$9,500.00" "$500.00" "$9,000.00" "$9,500.00"
|
||||
"$103,600.00" "$8,373.52" "$1,270.00" "$113,243.52" "$122,743.52"
|
||||
"#1.00 $1.7000" "1 FUNDS $480.8200")
|
||||
(sxml->table-row-col sxml 1 #f 2)))))
|
||||
|
||||
(define (multicol-pnl-tests)
|
||||
@ -615,4 +616,32 @@
|
||||
"testing period reverse chrono order pnl")))
|
||||
(test-equal "pnl-reverse chrono"
|
||||
'("Date" "03/31/80" "03/01/80" "02/01/80" "01/01/80")
|
||||
(sxml->table-row-col sxml 1 1 #f)))))
|
||||
(sxml->table-row-col sxml 1 1 #f)))
|
||||
|
||||
(set-option! multi-bs-options "Commodities" "Price Source" 'weighted-average)
|
||||
(let ((sxml (options->sxml multicol-balsheet-uuid multi-bs-options
|
||||
"multicol pnl weighted-average")))
|
||||
(test-equal "weighted average exchange-rate"
|
||||
(list "#1.00 $1 + 569/1100" "1 FUNDS $235 + 3/7")
|
||||
(sxml->table-row-col sxml 1 -2 -1)))
|
||||
|
||||
(set-option! multi-bs-options "Commodities" "Price Source" 'average-cost)
|
||||
(let ((sxml (options->sxml multicol-balsheet-uuid multi-bs-options
|
||||
"multicol pnl average-cost")))
|
||||
(test-equal "average-cost exchange-rate"
|
||||
'("#1.00 $1.2100" "1 FUNDS $203 + 1/3")
|
||||
(sxml->table-row-col sxml 1 -2 -1)))
|
||||
|
||||
(set-option! multi-bs-options "Commodities" "Price Source" 'pricedb-nearest)
|
||||
(let ((sxml (options->sxml multicol-balsheet-uuid multi-bs-options
|
||||
"multicol pnl pricedb-nearest")))
|
||||
(test-equal "pricedb-nearest exchange-rate"
|
||||
'("#1.00 $1.7000" "1 FUNDS $480.8200")
|
||||
(sxml->table-row-col sxml 1 -2 -1)))
|
||||
|
||||
(set-option! multi-bs-options "Commodities" "Price Source" 'pricedb-latest)
|
||||
(let ((sxml (options->sxml multicol-balsheet-uuid multi-bs-options
|
||||
"multicol pnl pricedb-latest")))
|
||||
(test-equal "pricedb-latest exchange-rate"
|
||||
'("#1.00 $1.7000" "1 FUNDS $480.8200")
|
||||
(sxml->table-row-col sxml 1 -2 -1)))))
|
||||
|
Loading…
Reference in New Issue
Block a user