281 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			281 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # More valuation tests. See also valuation.test.
 | |
| 
 | |
| ; some market prices
 | |
| P 2019-01-01 B   10 A
 | |
| P 2019-01-01 C    2 B
 | |
| P 2019-01-01 A  100 D
 | |
| P 2019-01-01 E    3 D
 | |
| 
 | |
| ; a transaction with both amounts in B
 | |
| 2019-06-01
 | |
|     a  1 B
 | |
|     b
 | |
| 
 | |
| ; tests follow. This comment directive makes this file readable
 | |
| ; by hledger, as well as shelltest; useful when troubleshooting.
 | |
| comment
 | |
| 
 | |
| # 1. normal unvalued output
 | |
| $ hledger -f- print -x
 | |
| 2019-06-01
 | |
|     a             1 B
 | |
|     b            -1 B
 | |
| 
 | |
| >=
 | |
| 
 | |
| # 2. current market value in default valuation commodity
 | |
| $ hledger -f- print -x -V
 | |
| 2019-06-01
 | |
|     a            10 A
 | |
|     b           -10 A
 | |
| 
 | |
| >=
 | |
| 
 | |
| # 3. same as above, but request commodity A explicitly
 | |
| $ hledger -f- print -x --value=now,A
 | |
| 2019-06-01
 | |
|     a            10 A
 | |
|     b           -10 A
 | |
| 
 | |
| >=
 | |
| 
 | |
| # 4. request commodity B - no effect
 | |
| $ hledger -f- print -x --value=now,B
 | |
| 2019-06-01
 | |
|     a             1 B
 | |
|     b            -1 B
 | |
| 
 | |
| >=
 | |
| 
 | |
| # 5. request commodity we don't have prices for - no effect
 | |
| $ hledger -f- print -x --value=now,Z
 | |
| 2019-06-01
 | |
|     a             1 B
 | |
|     b            -1 B
 | |
| 
 | |
| >=
 | |
| 
 | |
| # 6. request commodity C - uses reverse of C->B price.
 | |
| # There's nothing setting C display style, so the default style is used,
 | |
| # which shows no decimal digits.
 | |
| # And because that makes it display as zero, the commodity symbol
 | |
| # and sign are not shown either.
 | |
| $ hledger -f- print -x --value=now,C
 | |
| 2019-06-01
 | |
|     a               0
 | |
|     b               0
 | |
| 
 | |
| >=
 | |
| # # There's nothing setting C display style, so the default style is used,
 | |
| # # but the precision is increased to show the decimal digit
 | |
| # # (otherwise it would show C0).
 | |
| # $ hledger -f- print -x --value=now,C
 | |
| # 2019-06-01
 | |
| #     a            C0.5
 | |
| #     b           C-0.5
 | |
| #
 | |
| # >=
 | |
| 
 | |
| # 7. request commodity D - chains B->A, A->D prices
 | |
| $ hledger -f- print -x --value=now,D
 | |
| 2019-06-01
 | |
|     a          1000 D
 | |
|     b         -1000 D
 | |
| 
 | |
| >=
 | |
| 
 | |
| # 8. request commodity E - chains B->A, A->D, reverse of D->E prices.
 | |
| # As with C above, E gets the default display style, with precision 0.
 | |
| $ hledger -f- print -x --value=now,E
 | |
| 2019-06-01
 | |
|     a            E333
 | |
|     b           E-333
 | |
| 
 | |
| >=
 | |
| # # As with C above, E gets the default display style, but with the precision
 | |
| # # increased to show the decimal digits, but no more than 8.
 | |
| # $ hledger -f- print -x --value=now,E
 | |
| # 2019-06-01
 | |
| #     a     E333.33333333
 | |
| #     b    E-333.33333333
 | |
| #
 | |
| # >=
 | |
| 
 | |
| 
 | |
| # Document some print behaviour. 
 | |
| # I think I've forgotten some other weird cases meant for here.
 | |
| # First an example with no market price, just a transaction price.
 | |
| <
 | |
| 2000/01/01
 | |
|     a         -1A @ 1B
 | |
|     b          1B
 | |
| 
 | |
| # 9. Normal print output.
 | |
| $ hledger -f- print
 | |
| 2000-01-01
 | |
|     a        -1A @ 1B
 | |
|     b              1B
 | |
| 
 | |
| >=0
 | |
| 
 | |
| # 10. Valuing in a commodity with no market price has no effect.
 | |
| $ hledger -f- print -XZ
 | |
| 2000-01-01
 | |
|     a        -1A @ 1B
 | |
|     b              1B
 | |
| 
 | |
| >=0
 | |
| 
 | |
| # 11. -B converts to the transaction price's commodity.
 | |
| $ hledger -f- print -B
 | |
| 2000-01-01
 | |
|     a             -1B
 | |
|     b              1B
 | |
| 
 | |
| >=0
 | |
| 
 | |
| # 12. Note the -XZ nullifies the -B here, because both are forms of --value
 | |
| # (-B -XZ is equivalent to --value=cost --value=end,Z), and the rightmost wins.
 | |
| $ hledger -f- print -B -XZ
 | |
| 2000-01-01
 | |
|     a        -1A @ 1B
 | |
|     b              1B
 | |
| 
 | |
| >=0
 | |
| 
 | |
| # With a market price: same as above.
 | |
| <
 | |
| P 2000/1/1 A 1B
 | |
| 
 | |
| 2000/01/01
 | |
|     a         -1A @ 1B
 | |
|     b          1B
 | |
| 
 | |
| # 13. 
 | |
| $ hledger -f- print
 | |
| 2000-01-01
 | |
|     a        -1A @ 1B
 | |
|     b              1B
 | |
| 
 | |
| >=0
 | |
| 
 | |
| # 14. 
 | |
| $ hledger -f- print -XZ
 | |
| 2000-01-01
 | |
|     a        -1A @ 1B
 | |
|     b              1B
 | |
| 
 | |
| >=0
 | |
| 
 | |
| # 15. 
 | |
| $ hledger -f- print -B
 | |
| 2000-01-01
 | |
|     a             -1B
 | |
|     b              1B
 | |
| 
 | |
| >=0
 | |
| 
 | |
| # 16. 
 | |
| $ hledger -f- print -B -XZ
 | |
| 2000-01-01
 | |
|     a        -1A @ 1B
 | |
|     b              1B
 | |
| 
 | |
| >=0
 | |
| 
 | |
| # A few more tests for -V (and -X, which should work similarly). #1083.
 | |
| <
 | |
| P 2000/01/01 A  2 B
 | |
| P 2002/01/01 A  3 B
 | |
| 
 | |
| 2000/01/01
 | |
|   (a)      1 A
 | |
| 
 | |
| # 17. -V uses today as the default valuation date, unlike --value=end.
 | |
| $ hledger -f- reg -V
 | |
| 2000-01-01                      (a)                            3 B           3 B
 | |
| 
 | |
| # 18. -V uses the report end date, if specified, as valuation date.
 | |
| $ hledger -f- reg -V -e 2001
 | |
| 2000-01-01                      (a)                            2 B           2 B
 | |
| 
 | |
| # 19. In balance reports too.
 | |
| $ hledger -f- bal -N -V
 | |
|                  3 B  a
 | |
| 
 | |
| # 20.
 | |
| $ hledger -f- bal -N -V -e 2001
 | |
|                  2 B  a
 | |
| 
 | |
| #
 | |
| <
 | |
| P 2001/01/01 A  1 B
 | |
| P 2002/01/01 A  2 B
 | |
| 
 | |
| 2000-01-01
 | |
|   (a)  1 A
 | |
| 
 | |
| # 21. The valuation date is the last day of the report period. In
 | |
| # other words, the report end date is exclusive with respect to price
 | |
| # directives. This is a change from older hledger and Ledger, where it
 | |
| # was inclusive.
 | |
| $ hledger -f- bal -N -V -e 2002-01-01
 | |
|                  1 B  a
 | |
| 
 | |
| # Test market prices inferred from transactions.
 | |
| 
 | |
| # 22. Market price is not inferred from transactions by default.
 | |
| <
 | |
| 2020-01-01
 | |
|   (a)   1 A @ 2 B
 | |
| 
 | |
| $ hledger -f- bal -N -V
 | |
|                  1 A  a
 | |
| 
 | |
| # 23. Market price is inferred from transactions with --infer-value,
 | |
| # and -V can work with no P directives.
 | |
| $ hledger -f- bal -N -V --infer-value
 | |
|                   B2  a
 | |
| 
 | |
| # 24. A P-declared market price on the same date as a transaction price has precedence.
 | |
| <
 | |
| P 2020-01-01 A  1 B
 | |
| 
 | |
| 2020-01-01
 | |
|   (a)   1 A @ 2 B
 | |
| 
 | |
| $ hledger -f- bal -N -V --infer-value
 | |
|                  1 B  a
 | |
| 
 | |
| # 25. A transaction-inferred price newer than a P-declared price has precedence.
 | |
| <
 | |
| P 2020-01-01 A  1 B
 | |
| 
 | |
| 2020-01-02
 | |
|   (a)   1 A @ 2 B
 | |
| 
 | |
| $ hledger -f- bal -N -V --infer-value
 | |
|                  2 B  a
 | |
| 
 | |
| # 26. A later-dated P directive sets the valuation commodity even if parsed out of order.
 | |
| <
 | |
| P 2020-02-01 A  1 C
 | |
| P 2020-01-01 A  1 B
 | |
| 
 | |
| 2020-02-01
 | |
|   (a)   1 A @ 2 B
 | |
| 
 | |
| $ hledger -f- bal -N -V
 | |
|                  1 C  a
 | |
| 
 | |
| # 27. A later-dated transaction price sets the valuation commodity even if parsed out of order.
 | |
| <
 | |
| 2020-01-01
 | |
|   (a)   1 A @ 1 C  ; date: 2020-01-02
 | |
|   (a)   1 A @ 1 D  ; date: 2020-01-02
 | |
|   (a)   1 A @ 1 B
 | |
| 
 | |
| $ hledger -f- bal -N -V --infer-value
 | |
|                   D3  a
 | |
| 
 |