hledger/tests/journal/precision.test
Simon Michael 1741b607e2 lib: more cleanup of amount canonicalisation helpers (#1187)
Stop exporting journalAmounts, overJournalAmounts, traverseJournalAmounts.
Rename journalAmounts helper to journalStyleInfluencingAmounts.

D directives are now a little better at influencing amount
canonicalisation, eg in the updated test case.
2020-02-11 09:23:04 -08:00

148 lines
3.8 KiB
Plaintext

# http://code.google.com/p/hledger/issues/detail?id=23
#
# 1. original test case, this should balance since price precisions do
# not affect the canonical display precisions used for display and balancing
hledger -f - print
<<<
2010/1/1 x
A 55.3653 C @ 30.92189512 D
A -1712 D
>>>
2010-01-01 x
A 55.3653 C @ 30.92189512 D
A -1712 D
>>>=0
# 2. here the price should be printed with its original precision, not
# the canonical display precision. And the inferred amount should be printed
# with the canonical precision (2 digits, inferred from the first posting).
hledger -f - print --explicit
<<<
2010/1/1
a $0.00
a 1C @ $1.0049
a
>>>
2010-01-01
a 0
a 1C @ $1.0049
a $-1.00
>>>=0
# 3. with $'s display precision at 3 or more, this txn should not balance.
# The error message shows the difference with full precision.
hledger -f - balance --no-total --cost --empty
<<<
2010/1/1
a 1C @ $1.0049
a $-1.000
>>>2 /off by \$0.0049/
>>>= 1
# 4. with $'s display precision at 2 or less, this txn should balance
hledger -f - balance --no-total --cost --empty
<<<
2010/1/1
a 1C @ $1.0049
a $-1.00
>>>
0 a
>>>=0
# 5. avamk's 2011/1/19 example
hledger -f - balance --cost
<<<
2001/01/01 * ACME fund
assets:investment:ACME 203.890 ACME @ $16.02
equity:opening balances
>>>
$3266.32 assets:investment:ACME
$-3266.32 equity:opening balances
--------------------
0
>>>=0
# hledger 0.14pre: precision=2, presumably from price
# $3266.32 assets:investment:ACME
# $-3266.32 equity:opening balances
#--------------------
# $0.00
#
# ledger "2.6.0.90" with -s: full precision, ignores price
# $3266.3178 assets:investment:ACME
# $-3266.3178 equity:opening balances
#
# ledger 3: precision=0, uses default, ignores price
# $3266 assets:investment:ACME
# $-3266 equity:opening balances
#--------------------
# 0
## 6. with a default commodity..
hledger -f - balance --cost
<<<
D $1000.0
2001/01/01 * ACME fund
assets:investment:ACME 203.890 ACME @ $16.02
equity:opening balances
>>>
$3266.3 assets:investment:ACME
$-3266.3 equity:opening balances
--------------------
0
>>>=0
### hledger 0.14pre: precision=2, presumably from price, ignores D
### $3266.32 assets:investment:ACME
### $-3266.32 equity:opening balances
###--------------------
### $0.00
###
### ledger "2.6.0.90" with -s: full precision, ignores price and D
### $3266.3178 assets:investment:ACME
### $-3266.3178 equity:opening balances
###
### ledger 3: precision=1, ignores price, observes D
### $3266.3 assets:investment:ACME
### $-3266.3 equity:opening balances
###--------------------
### 0
#
# 7. when there are multiple postings in the commodity being priced,
# show the averaged unit price, with precision equal to the sum of
# the max precisions of the commodities being converted (#262).
# Here the (irrational) price should be displayed with just precision 4
# (C's precision 2 + D's precision 2).
hledger -f- print --explicit
<<<
2015/1/1
c C 10.00
c C 11.00
d D -320.00
>>>
2015-01-01
c C 10.00 @ D 15.2381
c C 11.00 @ D 15.2381
d D -320.00
>>>=0
## 8. Here the price should be displayed with precision 7
# (E's precision 4 + F's precision 3).
hledger -f- print --explicit
<<<
2015/1/1
e E 10.0000
e E 11
f F -320.000
>>>
2015-01-01
e E 10.0000 @ F 15.2380952
e E 11.0000 @ F 15.2380952
f F -320.000
>>>=0