This repository has been archived by the owner on May 1, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
/
test_asset_allocation.py
executable file
·129 lines (104 loc) · 4.28 KB
/
test_asset_allocation.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#!/usr/bin/env python3
from beancount.utils import test_utils
import asset_allocation
class TestScriptCheck(test_utils.TestCase):
@test_utils.docfile
def test_basic_unspecified(self, filename):
"""
2010-01-01 open Assets:Investments:Brokerage
2010-01-01 open Assets:Bank
2011-03-02 * "Buy stock"
Assets:Investments:Brokerage 1 BNCT {200 USD}
Assets:Bank
2011-03-02 price BNCT 200 USD
"""
with test_utils.capture('stdout', 'stderr') as (stdout, _):
result = test_utils.run_with_args(asset_allocation.main, [filename])
self.assertEqual(0, result)
self.assertRegex(stdout.getvalue(), "unknown *100.0% *200 *")
# self.assertLines("", stdout.getvalue())
@test_utils.docfile
def test_basic_specified(self, filename):
"""
2010-01-01 open Assets:Investments:Brokerage
2010-01-01 open Assets:Bank
2010-01-01 commodity BNCT
asset_allocation_equity: 60
asset_allocation_bond: 40
2011-03-02 * "Buy stock"
Assets:Investments:Brokerage 1 BNCT {200 USD}
Assets:Bank
2011-03-02 price BNCT 200 USD
"""
with test_utils.capture('stdout', 'stderr') as (stdout, _):
result = test_utils.run_with_args(asset_allocation.main, [filename])
self.assertEqual(0, result)
self.assertRegex(stdout.getvalue(), "equity *60.0% *120 *")
self.assertRegex(stdout.getvalue(), "bond *40.0% *80")
@test_utils.docfile
def test_basic_account_filter(self, filename):
"""
2010-01-01 open Assets:Investments:Brokerage
2010-01-01 open Assets:Investments:XTrade
2010-01-01 open Assets:Bank
2010-01-01 commodity BNCT
asset_allocation_equity: 60
asset_allocation_bond: 40
2011-03-02 * "Buy stock"
Assets:Investments:Brokerage 1 BNCT {200 USD}
Assets:Bank
2011-01-02 * "Buy stock"
Assets:Investments:XTrade 2 BNCT {200 USD}
Assets:Bank
2011-03-02 price BNCT 200 USD
"""
with test_utils.capture('stdout', 'stderr') as (stdout, _):
result = test_utils.run_with_args(asset_allocation.main, [filename,
'--accounts', 'Assets:Investments:Brokerage'])
self.assertEqual(0, result)
self.assertRegex(stdout.getvalue(), "equity *60.0% *120 *")
self.assertRegex(stdout.getvalue(), "bond *40.0% *80")
@test_utils.docfile
def test_basic_filter_exclude_parent(self, filename):
"""
2010-01-01 open Assets:Investments:Brokerage
2010-01-01 open Assets:Investments:XTrade
2010-01-01 open Assets:Bank
2010-01-01 commodity BNCT
asset_allocation_equity: 60
asset_allocation_bond: 40
2011-03-02 * "Buy stock"
Assets:Investments:Brokerage 1 BNCT {200 USD}
Assets:Bank
2011-01-02 * "Buy stock"
Assets:Investments:XTrade 2 BNCT {200 USD}
Assets:Bank
2011-01-02 * "Buy stock"
Assets:Investments 7 BNCT {200 USD}
Assets:Bank
2011-03-02 price BNCT 200 USD
"""
with test_utils.capture('stdout', 'stderr') as (stdout, _):
result = test_utils.run_with_args(asset_allocation.main, [filename,
'--accounts', 'Assets:Investments:Brokerage'])
self.assertEqual(0, result)
self.assertRegex(stdout.getvalue(), "equity *60.0% *120 *")
self.assertRegex(stdout.getvalue(), "bond *40.0% *80")
@test_utils.docfile
def test_tree_empty_parent(self, filename):
"""
2010-01-01 open Assets:Investments:XTrade
2010-01-01 open Assets:Bank
2010-01-01 commodity BNCT
asset_allocation_equity_international: 100
2011-01-02 * "Buy stock"
Assets:Investments:XTrade 700 BNCT {200 USD}
Assets:Bank
2011-03-02 price BNCT 200 USD
"""
with test_utils.capture('stdout', 'stderr') as (stdout, _):
result = test_utils.run_with_args(asset_allocation.main, [filename,
'--accounts', 'Assets:Investments'])
self.assertEqual(0, result)
self.assertRegex(stdout.getvalue(), "equity *100.0%")
self.assertRegex(stdout.getvalue(), " international *100.0%")