The code is now much more manageable, faciliating further improvements. Completion now works at all prompts, and will insert the default value if the input area is empty. Account and amount defaults are more robust and useful in various situations. There might be a slight regression with default commodity handling.
129 lines
2.1 KiB
Plaintext
129 lines
2.1 KiB
Plaintext
##############################################################################
|
|
# data validation
|
|
#
|
|
# 1. should prompt again for a bad date
|
|
hledgerdev -f $$-add.j add; rm -f $$-add.j
|
|
<<<
|
|
2009/1/32
|
|
>>> /A valid hledger smart date is required/
|
|
>>>=0
|
|
|
|
# 2. should accept a blank date
|
|
hledgerdev -f $$-add.j add; rm -f $$-add.j
|
|
<<<
|
|
|
|
>>> /Date .*: Description:/
|
|
>>>=0
|
|
|
|
##############################################################################
|
|
# precision and commodity handling
|
|
#
|
|
# 3. simple add with no existing journal, no commodity entered
|
|
hledgerdev -f $$-add.j add; rm -f $$-add.j
|
|
<<<
|
|
|
|
|
|
a
|
|
1000.0
|
|
b
|
|
|
|
.
|
|
>>> /^Date.*: Description.*: Account 1.*: Amount 1.*: Account 2.*: Amount 2.*: Account 3.*or \. to finish.*:/
|
|
>>>=0
|
|
|
|
# 4. default commodity with greater precision
|
|
printf 'D $1000.00\n' >t$$.j; hledgerdev -f t$$.j add >/dev/null; cat t$$.j; rm -f t$$.j
|
|
<<<
|
|
|
|
|
|
a
|
|
$1000.0
|
|
b
|
|
|
|
.
|
|
|
|
>>> /a +\$1000\.0/
|
|
>>>=0
|
|
|
|
# 5. default commodity with less precision
|
|
printf 'D $1000.0\n' >t$$.j; hledgerdev -f t$$.j add >/dev/null; cat t$$.j; rm -f t$$.j
|
|
<<<
|
|
|
|
|
|
a
|
|
$1000.00
|
|
b
|
|
|
|
.
|
|
|
|
>>> /a +\$1000\.00/
|
|
>>>=0
|
|
|
|
# 6. existing commodity with greater precision
|
|
printf '2010/1/1\n a $1000.00\n b\n' >t$$.j; hledgerdev -f t$$.j add >/dev/null; cat t$$.j; rm -f t$$.j
|
|
<<<
|
|
|
|
|
|
a
|
|
$1000.0
|
|
b
|
|
|
|
.
|
|
>>> /a +\$1000\.0/
|
|
>>>=0
|
|
|
|
# 7. existing commodity with less precision
|
|
printf '2010/1/1\n a $1000.0\n b\n' >t$$.j; hledgerdev -f t$$.j add >/dev/null; cat t$$.j; rm -f t$$.j
|
|
<<<
|
|
|
|
|
|
a
|
|
$1000.00
|
|
b
|
|
|
|
.
|
|
|
|
>>> /a +\$1000\.00/
|
|
>>>=0
|
|
|
|
# 8. no commodity entered, the (most recent) default commodity should be applied
|
|
# (and a non-ascii commodity symbol should work)
|
|
printf 'D $1000.0\nD £1,000.00\n' >t$$.j; hledgerdev -f t$$.j add; cat t$$.j; rm -f t$$.j
|
|
<<<
|
|
2010/1/1
|
|
|
|
a
|
|
1000
|
|
b
|
|
|
|
.
|
|
|
|
>>> /a +£1,000.00/
|
|
>>>=0
|
|
|
|
# 9. default amounts should not fail to balance due to precision
|
|
rm -f nosuch.journal; hledgerdev -f nosuch.journal add; rm -f nosuch.journal
|
|
<<<
|
|
2010/1/1
|
|
x
|
|
a
|
|
0.25
|
|
b
|
|
0.5
|
|
c
|
|
>>> /Amount 3 \[-0.75\]:/
|
|
>>>=0
|
|
|
|
## 10. shouldn't add decimals if there aren't any
|
|
## printf '\n\na\n1\nb\n' | hledgerdev -f /dev/null add
|
|
# hledgerdev -f /dev/null add
|
|
# <<<
|
|
|
|
|
|
# a
|
|
# 1
|
|
# b
|
|
# >>> /amount 2 \[-1\]/
|
|
# >>>=0
|
|
|