hledger/tests/add.test
Simon Michael dcdb032d96 add: rewrite using wizards and make it more robust
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.
2014-02-27 18:15:49 -08:00

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