account.py (2491B)
1 import logging 2 import datetime 3 import unittest 4 import os 5 6 from usawa import UnitIndex 7 from usawa.account import AccountIndex, AccountType, AccountDisplay 8 from usawa.error import AccountError 9 10 logging.basicConfig(level=logging.DEBUG) 11 logg = logging.getLogger() 12 13 testdir = os.path.realpath(os.path.dirname(__file__)) 14 15 class TestAccount(unittest.TestCase): 16 17 def setUp(self): 18 self.uidx = UnitIndex('FOO') 19 self.uidx.add('BAR') 20 21 def test_account_lock(self): 22 idx = AccountIndex(self.uidx) 23 # missing account type 24 with self.assertRaises(AttributeError): 25 idx.add('bar/baz', sym='FOO') 26 idx.add('liability/bar/baz', sym='FOO') 27 idx.add('liability/bar/baz', sym='FOO') 28 with self.assertRaises(AccountError): 29 idx.add('asset/bar/baz-', sym='FOO') 30 with self.assertRaises(AccountError): 31 idx.add('asset/foo/bar', sym='BAZ') 32 self.assertFalse(idx.check('BAR', AccountType.liability, 'foo/baz')) 33 self.assertTrue(idx.check('FOO', AccountType.liability, 'bar/baz')) 34 35 36 def test_account_list(self): 37 idx = AccountIndex(self.uidx) 38 idx.add('asset/bar/bar', sym='FOO') 39 idx.add('liability/bar/baz', sym='FOO') 40 idx.add('asset/foo/baz', sym='BAR') 41 v = list(idx) 42 self.assertEqual(len(v), 3) 43 44 45 def test_account_filter(self): 46 idx = AccountIndex(self.uidx) 47 idx.add('asset/bar/bar', sym='FOO') 48 idx.add('liability/bar/baz', sym='FOO') 49 idx.add('asset/foo/baz', sym='BAR') 50 idx.add('asset/xyzzy', sym='BAR') 51 idx.set_filter(sym='FOO') 52 v = list(idx) 53 self.assertEqual(len(v), 2) 54 idx.set_filter(sym='BAR') 55 v = list(idx) 56 self.assertEqual(len(v), 2) 57 idx.set_filter(sym='FOO', typ=AccountType.liability) 58 v = list(idx) 59 self.assertEqual(len(v), 1) 60 idx.set_filter(sym='BAR', typ=AccountType.asset) 61 v = list(idx) 62 self.assertEqual(len(v), 2) 63 64 65 def test_account_display(self): 66 idx = AccountIndex(self.uidx) 67 idx.add('asset/bar/baz', sym='FOO') 68 v = list(idx) 69 self.assertEqual(v[0], 'FOO.asset/bar/baz') 70 idx.set_filter(display=AccountDisplay.typ) 71 v = list(idx) 72 self.assertEqual(v[0], 'asset/bar/baz') 73 idx.set_filter(display=AccountDisplay.path) 74 v = list(idx) 75 self.assertEqual(v[0], 'bar/baz') 76 77 78 if __name__ == '__main__': 79 unittest.main()