hledger/tests/misc/prices.test
Simon Michael 21d9945ba9 tests: make functional tests use "hledger" again
Using "hledgerdev" was a hack to help ensure that tests used a fresh
developer build by default. Now they specify "hledger" again, which fits
better with stack. It's up to the tester to make sure the desired
executable is first in PATH or specified with -w. (Note a couple of
tests currently don't obey -w and will always run "hledger", see addons.test).
2015-07-12 12:29:53 -07:00

282 lines
6.2 KiB
Plaintext

# price-related tests
# 1. print a transaction with an explicit unit price
hledger -f- print
<<<
2011/01/01
expenses:foreign currency €100 @ $1.35
assets
>>>
2011/01/01
expenses:foreign currency €100 @ $1.35
assets $-135.00
>>>=0
# 2. -B/--cost converts to the price's commodity ("cost")
hledger -f- print --cost
<<<
2011/01/01
expenses:foreign currency €100 @ $1.35
assets
>>>
2011/01/01
expenses:foreign currency $135.00
assets $-135.00
>>>=0
# 3. -B should ignore historical price directives
hledger -f- print -B
<<<
P 2011/01/01 € $1.35
2011/01/01
expenses:foreign currency €100
assets
>>>
2011/01/01
expenses:foreign currency €100
assets €-100
>>>=0
# 4. print a transaction with a total price
hledger -f - print
<<<
2011/01/01
expenses:foreign currency €100 @@ $135
assets
>>>
2011/01/01
expenses:foreign currency €100 @@ $135
assets $-135
>>>=0
# 5. when the balance has exactly two commodities, both unpriced, infer an
# implicit conversion price for the first one in terms of the second.
hledger -f - print
<<<
2011/01/01
expenses:foreign currency €100
misc $2.1
assets $-135.00
misc €1
misc €-1
misc $-2.1
>>>
2011/01/01
expenses:foreign currency €100 @ $1.35
misc $2.10
assets $-135.00
misc €1 @ $1.35
misc €-1 @ $1.35
misc $-2.10
>>>=0
## 6. another, from ledger tests. Just one posting to price so uses @@.
hledger -f - print
<<<
2002/09/30 * 1a1a6305d06ce4b284dba0d267c23f69d70c20be
c56a21d23a6535184e7152ee138c28974f14280c 866.231000 GGGGG
a35e82730cf91569c302b313780e5895f75a62b9 $-17,783.72
>>>
2002/09/30 * 1a1a6305d06ce4b284dba0d267c23f69d70c20be
c56a21d23a6535184e7152ee138c28974f14280c 866.231000 GGGGG @@ $17,783.72
a35e82730cf91569c302b313780e5895f75a62b9 $-17,783.72
>>>=0
# 7. when the balance has more than two commodities, don't bother
hledger -f - print
<<<
2011/01/01
expenses:foreign currency €100
assets $-135
expenses:other £200
>>>= !0
# 8. another
hledger -f - balance -B
<<<
2011/01/01
expenses:foreign currency €99
assets $-130
expenses:foreign currency €1
assets $-5
>>>
$-135 assets
$135 expenses:foreign currency
--------------------
0
>>>=0
# 9. transaction in two commodities should balance out properly
hledger -f - balance --cost
<<<
2011/01/01 x
a 10£ @@ 16$
b
>>>
16$ a
-16$ b
--------------------
0
>>>=0
# 10. When commodity price is specified implicitly, transaction should
# be considered balanced out even when first amount is negative
# (that is, price for it should be determined properly, with proper sign)
hledger -f - balance
<<<
2011/01/01 x
a -10£
b 16$
>>>
-10£ a
16$ b
--------------------
16$
-10£
>>>=0
# 11. When commodity price is specified implicitly, transaction should
# NOT be considered balanced out when BOTH amounts are negative
hledger -f - balance
<<<
2011/01/01 x
a -10£
b -16$
>>>
>>>=1
# 12. Differently-priced lots of a commodity should be merged in balance report
hledger -f - balance
<<<
2011/1/1
(a) £1 @ $2
2011/1/1
(a) £1 @ $3
>>>
£2 a
--------------------
£2
>>>=0
# 13. this should balance
hledger -f - balance
<<<
2011/1/1
a 1h @ $10
b 1h @ $20
c $-30
>>>= 0
# 14. we ignore P, so this should balance
hledger -f - balance
<<<
P 2011/11/15 EUR CHF 1
2011/11/19
a EUR 1000.00
b CHF -1254
>>>= 0
# # 14b. if P worked, this should balance
# hledger -f - balance
# <<<
# P 2011/11/15 EUR CHF 1.234
# 2011/11/19
# a EUR 1000.00
# b USD 1000.00
# c CHF -1254
# >>>= 0
# 15. these balance because of the unit prices, and should parse successfully
hledger -f - balance --no-total
<<<
1/1
a 1X @ 2Y
a -2X @ 1Y
>>>
-1X a
>>>= 0
# 16.
hledger -f - balance --no-total -B
<<<
1/1
a 1X @ 2Y
a -2X @ 1Y
>>>
>>>= 0
# 17. likewise with total prices. Note how the primary amount's sign is used.
hledger -f - balance --no-total
<<<
1/1
a 1X @@ 1Y
a -2X @@ 1Y
>>>
-1X a
>>>= 0
# 18.
hledger -f - balance --no-total -B
<<<
1/1
a 1X @@ 1Y
a -2X @@ 1Y
>>>
>>>= 0
# 19. here, a's primary amount is 0, and its cost is 1Y; b is the assigned auto-balancing amount of -1Y (per issue 69)
hledger -f - balance --no-total -E
<<<
1/1
a 1X @@ 1Y
a 1X @@ 1Y
a -2X @@ 1Y
b
>>>
0 a
-1Y b
>>>= 0
# 20. the above with -B
hledger -f - balance --no-total -E -B
<<<
1/1
a 1X @@ 1Y
a 1X @@ 1Y
a -2X @@ 1Y
b
>>>
1Y a
-1Y b
>>>= 0
# # when the *cost-basis* balance has exactly two commodities, both
# # unpriced, infer an implicit conversion price for the first one in terms
# # of the second.
# hledger -f - print
# <<<
# 2011/01/01
# expenses:foreign currency €100
# assets $-135.00
# misc $3.1 @ 2 bob
# misc $-3.1 @ 2 bob
# misc £1 @@ 2 shekels
# misc £-1 @@ 2 shekels
# >>>
# 2011/01/01
# expenses:foreign currency €100 @ $1.35
# assets €-100 @ $1.35
# misc $3.1 @ 2 bob
# misc $-3.1 @ 2 bob
# misc £1 @@ 2 shekels
# misc £-1 @@ 2 shekels
#