435 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			435 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env shelltest
 | |
| # 1. test some balance assertions
 | |
| hledger -f - stats
 | |
| <<<
 | |
| 2013/1/1
 | |
|   a    $1  =$1
 | |
|   b        =-$1
 | |
| 
 | |
| 2013/1/2
 | |
|   a    $1  =$2
 | |
|   b   $-1  =$-2
 | |
| 
 | |
| 2013/1/3
 | |
|   a    $1  = $3
 | |
|   b   $-1  = $-3
 | |
|   (b)  $1  = $-2
 | |
| 
 | |
| >>> /Transactions/
 | |
| >>>2
 | |
| >>>=0
 | |
| 
 | |
| # 2. same entries as 1 but different parse order, assertion should still pass based on date
 | |
| hledger -f - stats
 | |
| <<<
 | |
| 2013/1/1
 | |
|   a    $1  =$1
 | |
|   b        =-$1
 | |
| 
 | |
| 2013/1/3
 | |
|   a    $1  = $3
 | |
|   b   $-1  = $-3
 | |
|   (b)  $1  = $-2
 | |
| 
 | |
| 2013/1/2
 | |
|   a    $1  =$2
 | |
|   b   $-1  =$-2
 | |
| 
 | |
| >>> /Transactions/
 | |
| >>>2
 | |
| >>>=0
 | |
| 
 | |
| # 3. like 1 but switch order of postings in last entry,
 | |
| # assertion should fail and exit code should be non zero
 | |
| hledger -f - stats
 | |
| <<<
 | |
| 2013/1/1
 | |
|   a    $1  =$1
 | |
|   b        =-$1
 | |
| 
 | |
| 2013/1/2
 | |
|   a    $1  =$2
 | |
|   b   $-1  =$-2
 | |
| 
 | |
| 2013/1/3
 | |
|   a    $1  = $3
 | |
|   (b)  $1  = $-2
 | |
|   b   $-1  = $-3
 | |
| 
 | |
| >>>
 | |
| >>>2 /balance assertion error.*line 11, column 12/
 | |
| >>>=1
 | |
| 
 | |
| # 4. should also work without commodity symbols
 | |
| hledger -f - stats
 | |
| <<<
 | |
| 2013/1/1
 | |
|   (a)    1  =1
 | |
| 
 | |
| >>> /Transactions/
 | |
| >>>2
 | |
| >>>=0
 | |
| 
 | |
| # 5. should work for fractional amount with trailing zeros
 | |
| hledger -f - stats
 | |
| <<<
 | |
| 2013/1/1
 | |
|   a    $1.20  =$1.20
 | |
|   b           =-$1.20
 | |
| 
 | |
| 2013/1/2
 | |
|   a    $0.10  =$1.3
 | |
|   b           =-$1.3
 | |
| 
 | |
| 2013/1/3
 | |
|   a    $0.7   =$2
 | |
|   b           =-$2
 | |
| 
 | |
| >>> /Transactions/
 | |
| >>>2
 | |
| >>>=0
 | |
| 
 | |
| # 6. assertions currently check only a single commodity's balance, like Ledger
 | |
| hledger -f - stats
 | |
| <<<
 | |
| 1/2
 | |
|   (a)  A1
 | |
|   (a)  B1 = A1
 | |
|   (a)  0  = A1
 | |
|   (a)  C0 = D0
 | |
| >>> /Transactions/
 | |
| >>>2
 | |
| >>>=0
 | |
| 
 | |
| # 7. balances should accumulate (#195)
 | |
| hledger -f - stats
 | |
| <<<
 | |
| 1/1
 | |
|     (a)   1F = 1F
 | |
|     (a)   2G = 2G
 | |
| 
 | |
| 1/2
 | |
|     (a)   3F = 4F
 | |
| >>> !/assertion failed/
 | |
| >>>2
 | |
| >>>=0
 | |
| 
 | |
| # 8. what should happen here ? Currently,
 | |
| # in a, 3.4 EUR @@ $5.6 and -3.4 EUR cancel out (wrong ?)
 | |
| # in b, 
 | |
| # 
 | |
| # hledger -f - stats
 | |
| # <<<
 | |
| # 2013/1/1
 | |
| #   a    $1.20
 | |
| #   a    3.4 EUR @@ $5.6
 | |
| #   b  
 | |
| 
 | |
| # 2013/1/2
 | |
| #   a    -3.4 EUR
 | |
| #   b
 | |
| 
 | |
| # 2013/1/3
 | |
| #   a    $0.1   =$1.30
 | |
| #   b           =-$1.30
 | |
| 
 | |
| # >>> /Transactions/
 | |
| # >>>2
 | |
| # >>>=0
 | |
| 
 | |
| # 8. resetting a balance
 | |
| hledger -f - stats
 | |
| <<<
 | |
| 2013/1/1
 | |
|   a    $1.20
 | |
|   b
 | |
| 
 | |
| 2013/1/2
 | |
|   a           =$1.3
 | |
|   b
 | |
| 
 | |
| 2013/1/2
 | |
|   a           $10 =$11.3
 | |
|   b         =$-11.3
 | |
| 
 | |
| >>> /Transactions/
 | |
| >>>2
 | |
| >>>=0
 | |
| 
 | |
| 
 | |
| # 9. Multiple assertions for an account in the same transaction.
 | |
| hledger -f - stats
 | |
| <<<
 | |
| 2013/1/1
 | |
|   a    $1  =$1
 | |
|   b        =-$1
 | |
| 
 | |
| 2013/1/2
 | |
|   a    $1  =$2
 | |
|   b   $-1  =$-2
 | |
| 
 | |
| 2013/1/3
 | |
|   a    $2  = $4
 | |
|   b   $-1  = $-3
 | |
|   b   $-1  = $-4
 | |
| 
 | |
| >>> /Transactions/
 | |
| >>>2
 | |
| >>>=0
 | |
| 
 | |
| # 10. Multiple assertions and assignments for an account in the same transaction.
 | |
| hledger -f - stats
 | |
| <<<
 | |
| 2013/1/1
 | |
|   a    $1  =$1
 | |
|   b        =-$1
 | |
| 
 | |
| 2013/1/3
 | |
|   a    $6  = $7
 | |
|   b   $-1  = $-2
 | |
|   b   $-1  = $-3
 | |
|   b   $-7    = $-10
 | |
|   b   $-1
 | |
|   b   $-1  = $-12
 | |
|   b
 | |
| 
 | |
| 2013/1/4
 | |
|   a    $0 = $7
 | |
|   b   $0   = $-7
 | |
| 
 | |
| >>> /Transactions/
 | |
| >>>2
 | |
| >>>=0
 | |
| 
 | |
| # 11. Assignments and virtual postings
 | |
| hledger -f - stats
 | |
| <<<
 | |
| 2013/1/1
 | |
|   b
 | |
|   [a]    1$
 | |
|   (b)     = $14
 | |
|   [b]
 | |
|   a      4$
 | |
| 
 | |
| 
 | |
| 2013/1/2
 | |
|   [a]      = $5
 | |
|   b        = $9
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| >>> /Transactions/
 | |
| >>>2
 | |
| >>>=0
 | |
| # 12. Having both assignments and posting dates is not supported.
 | |
| hledger -f - stats
 | |
| <<<
 | |
| 2013/1/1
 | |
|   a    $1  =$1
 | |
|   b         =$-1  ; date:2012/1/1
 | |
| 
 | |
| >>>2  /postings may not have both a custom date and a balance assignment/
 | |
| >>>=1
 | |
| 
 | |
| # 13. Having both assignments and posting dates is not supported.
 | |
| hledger -f - stats
 | |
| <<<
 | |
| 
 | |
| 2013/1/1
 | |
|   a    1 = -2
 | |
|   b
 | |
|   c   = 5
 | |
| 
 | |
| 2014/1/1
 | |
|   a    -3 = -3  ; date:2012/1/1
 | |
|   d      = 3
 | |
| 
 | |
| 
 | |
| >>>2  /postings may not have both a custom date and a balance assignment/
 | |
| >>>=1
 | |
| 
 | |
| # 14. Posting Date
 | |
| hledger -f - stats
 | |
| <<<
 | |
| 
 | |
| 2011/5/5
 | |
|   [a]        = -10
 | |
| 
 | |
| 2013/1/1
 | |
|   a    1 = -12
 | |
|   b
 | |
|   c   = 5
 | |
| 
 | |
| 2014/1/1
 | |
|   a      ; date:2012/1/1
 | |
|   d     3 = 3
 | |
| 
 | |
| 2015/1/1
 | |
|   [a]      ; date:2011/1/1
 | |
|   [d]    10
 | |
| 
 | |
| 
 | |
| >>> /Transactions/
 | |
| >>>2
 | |
| >>>=0
 | |
| 
 | |
| # 15. Mix different commodities
 | |
| hledger -f - stats
 | |
| <<<
 | |
| 2016/1/1
 | |
|     a      $1
 | |
|     b      -1 zorkmids
 | |
| 
 | |
| 2016/1/2
 | |
|     a     $-1 = $0
 | |
|     b
 | |
| >>> /Transactions/
 | |
| >>>2
 | |
| >>>=0
 | |
| 
 | |
| # 16. Mix different commodities and assignments
 | |
| hledger -f - stats
 | |
| <<<
 | |
| 2016/1/1
 | |
|     a      $1
 | |
|     b      -1 zorkmids
 | |
| 
 | |
| 2016/1/4
 | |
|     [a]    = $1
 | |
| 
 | |
| 
 | |
| 2016/1/5
 | |
|     [a]    = -1 zorkmids
 | |
| 
 | |
| 2016/1/2
 | |
|     a
 | |
|     b      = 0 zorkmids
 | |
| >>> /Transactions/
 | |
| >>>2
 | |
| >>>=0
 | |
| 
 | |
| # 17. Exact assertions parse correctly
 | |
| hledger -f - stats
 | |
| <<<
 | |
| 2016/1/1
 | |
|     a      $1
 | |
|     b
 | |
| 
 | |
| 2016/1/2
 | |
|     a         == $1
 | |
| >>> /Transactions/
 | |
| >>>2
 | |
| >>>=0
 | |
| 
 | |
| # 18. Exact assertions consider entire account
 | |
| hledger -f - stats
 | |
| <<<
 | |
| 2016/1/1
 | |
|     a      $1
 | |
|     b
 | |
| 
 | |
| 2016/1/2
 | |
|     a       1 zorkmids
 | |
|     b
 | |
| 
 | |
| 2016/1/3
 | |
|     a       0 == $1
 | |
| >>>2 /balance assertion error.*line 10, column 15/
 | |
| >>>=1
 | |
| 
 | |
| # 19. Mix different commodities and exact assignments
 | |
| hledger -f - stats
 | |
| <<<
 | |
| 2016/1/1
 | |
|     a      $1
 | |
|     a      -1 zorkmids
 | |
|     b
 | |
| 
 | |
| 2016/1/2
 | |
|     a         == $1
 | |
|     b      -1 zorkmids
 | |
| 
 | |
| 2016/1/3
 | |
|     b       0 = $-1
 | |
|     b       0 = 0 zorkmids
 | |
| >>> /Transactions/
 | |
| >>>2
 | |
| >>>=0
 | |
| 
 | |
| # 20. Balance assertions may not have a price in them.
 | |
| hledger -f- stats
 | |
| <<<
 | |
| 2019/01/01
 | |
|     (a)             1A = 1A @ 2B
 | |
| >>>
 | |
| >>>2 /unexpected '@'/
 | |
| >>>=1
 | |
| 
 | |
| # 21. With a commodity directive limiting the display precision. 
 | |
| # Assertions pass if the difference between asserted and actual amounts
 | |
| # appears to be zero, when rendered to the greater of the standard 
 | |
| # display precision and the asserted amount's precision. 
 | |
| # Here,
 | |
| # Actual balance:       1.006
 | |
| # Asserted balence:     1.006
 | |
| # Difference:           0.000
 | |
| # Standard & asserted precisions: 2, 3
 | |
| # Difference rendered:  0.000
 | |
| # Result:               pass
 | |
| hledger -f- stats
 | |
| <<<
 | |
| commodity $1000.00
 | |
| 
 | |
| 2019/01/01
 | |
|     (a)             $0.006
 | |
| 
 | |
| 2019/01/02
 | |
|     (a)             $1.00  = $1.006
 | |
| 
 | |
| >>> /Transactions/
 | |
| >>>2
 | |
| >>>=0
 | |
| 
 | |
| # 22. A rounded assertion amount can also pass. Here,
 | |
| # Actual balance:       1.006
 | |
| # Asserted balence:     1.01
 | |
| # Difference:           0.004
 | |
| # Standard & asserted precisions: 2, 2
 | |
| # Difference rendered:  0.00
 | |
| # Result:               pass
 | |
| hledger -f- stats
 | |
| <<<
 | |
| commodity $1000.00
 | |
| 
 | |
| 2019/01/01
 | |
|     (a)             $0.006
 | |
| 
 | |
| 2019/01/02
 | |
|     (a)             $1.00  = $1.01
 | |
| 
 | |
| >>> /Transactions/
 | |
| >>>2
 | |
| >>>=0
 | |
| 
 | |
| # 23. A more precise assertion amount can fail. Here,
 | |
| # Actual balance:       1.006
 | |
| # Asserted balence:     1.0061
 | |
| # Difference:           0.0001
 | |
| # Standard & asserted precisions: 2, 4
 | |
| # Difference rendered:  0.0001
 | |
| # Result:               fail
 | |
| hledger -f- stats
 | |
| <<<
 | |
| commodity $1000.00
 | |
| 
 | |
| 2019/01/01
 | |
|     (a)             $0.006
 | |
| 
 | |
| 2019/01/02
 | |
|     (a)             $1.00  = $1.0061
 | |
| 
 | |
| >>>
 | |
| >>>2 /difference: \+\$0\.0001/
 | |
| >>>=1
 |