def setUp(self): self.m1 = Money(1.25) self.m2 = Money(1.26) self.m3 = Money(1.25) self.f1 = 1.25 self.f2 = 1.26 self.f3 = 1.25 self.s1 = '1.25' self.s2 = '1.26' self.s3 = '1.25'
def amtOn(self, trans_date): date = self.start while (True): if date not in self.skip: if date == trans_date: return self.amount if date > trans_date: return Money(0) if self.end and trans_date > self.end: return Money(0) if self.frequency == Transaction.ONCE: return Money(0) date = self._step_to_next_date(date)
def test_contructor_string_balance(self): sd = date.today() sb = '100.00' ts = TransactionStore() cf = CashFlow(sd, sb, ts) self.assertIsInstance(cf.start_date, date) self.assertEqual(cf.start_date, sd) self.assertIsInstance(cf.start_balance, Money) self.assertEqual(cf.start_balance, Money(sb)) self.assertIsInstance(cf.transaction_store, TransactionStore) self.assertEqual(len(cf.transaction_store.getTransactions()), 0) self.assertIsInstance(cf.current_date, date) self.assertEqual(cf.current_date, sd) self.assertIsInstance(cf.current_balance, Money) self.assertEqual(cf.current_balance, Money(sb))
def __init__(self, start=date.today(), original_start=None, end=None, description="<Description>", amount=0.00, frequency=None, skip=None, scheduled=False, cleared=False): self.start = start if original_start is None: original_start = self.start self.original_start = original_start self.end = end self.description = description self.amount = Money(amount) if frequency is None: frequency = Transaction.ONCE self.frequency = frequency if skip is None: skip = set() self.skip = skip self.scheduled = scheduled self.cleared = cleared
def test_money_neq_string(self): m1 = Money(1.25) m2 = '1.26' self.assertNotEqual(m1, m2)
def test_subtract_money_and_string(self): m1 = Money(2.51) m2 = '1.26' m3 = m1 - m2 self.assertIsInstance(m3, Money) self.assertEqual(repr(m3), "1.25")
def test_add_money_and_string(self): m1 = Money(1.25) m2 = '1.26' m3 = m1 + m2 self.assertIsInstance(m3, Money) self.assertEqual(repr(m3), "2.51")
def test_str_two_decimals(self): m = Money('1.23') self.assertEqual(str(m), "1.23")
def test_str_no_decimals(self): m = Money('1') self.assertEqual(str(m), "1.00")
def test_recurrence_with_skip(self): self.t.skip.add(self.ny) self.assertRecurrence(self.t, self.sd, self.t.amount, self.ny_days, self.ny, Money(0), self.nyp1_days, self.yan_days, self.yan, self.t.amount)
def test_recurrence_with_end(self): self.t.end = self.ny + relativedelta(days=10) self.assertRecurrence(self.t, self.sd, self.t.amount, self.ny_days, self.ny, self.t.amount, self.nyp1_days, self.yan_days, self.yan, Money(0))
def test_recurrence_with_skip(self): self.t.skip.add(self.nq) self.assertRecurrence(self.t, self.sd, self.t.amount, self.nq_days, self.nq, Money(0), self.nqp1_days, self.qan_days, self.qan, self.t.amount)
def test_recurrence_with_skip(self): self.t.skip.add(self.nm) self.assertRecurrence(self.t, self.sd, self.t.amount, self.nm_days, self.nm, Money(0), self.nmp1_days, self.man_days, self.man, self.t.amount)
def test_recurrence_with_skip(self): self.t.skip.add(self.nbw) self.assertRecurrence(self.t, self.sd, self.t.amount, self.nbw_days, self.nbw, Money(0), self.nbwp1_days, self.bwan_days, self.bwan, self.t.amount)
def test_recurrence_with_end(self): self.t.end = self.nbw + timedelta(days=1) self.assertRecurrence(self.t, self.sd, self.t.amount, self.nbw_days, self.nbw, self.t.amount, self.nbwp1_days, self.bwan_days, self.bwan, Money(0))
def test_received_money(self): m = Money(Money('1.54')) self.assertIsInstance(m, Money) self.assertEqual(m.value, Decimal('1.54'))
def test_start_date_hits(self): self.assertEqual(self.t1.amtOn(self.sd), self.t1.amount) self.assertEqual(self.t1.amtOn(self.sdp1), Money(0))
def test_str_one_decimal(self): m = Money('1.2') self.assertEqual(str(m), "1.20")
def test_date_after_start_date_hits(self): self.assertEqual(self.t2.amtOn(self.sd), Money(0)) self.assertEqual(self.t2.amtOn(self.sdp1), Money(0)) self.assertEqual(self.t2.amtOn(self.sdp2), self.t2.amount) self.assertEqual(self.t2.amtOn(self.sdp3), Money(0))
def test_add_money_and_float(self): m1 = Money(1.25) m2 = 1.26 m3 = m1 + m2 self.assertIsInstance(m3, Money) self.assertEqual(repr(m3), "2.51")
def test_update_with_money(self): self.t.updateAmount(Money(3.50)) self.assertEqual(Decimal(repr(self.t.amount)), Decimal(3.50))
def test_empty_constructor(self): m = Money() self.assertIsInstance(m, Money) self.assertEqual(m.value, Decimal(0.0))
def test_money_eq_money(self): m1 = Money(1.25) m2 = Money(1.25) self.assertEqual(m1, m2)
def test_money_neq_money(self): m1 = Money(1.25) m2 = Money(1.26) self.assertNotEqual(m1, m2)
def test_money_neq_float(self): m1 = Money(1.25) m2 = 1.26 self.assertNotEqual(m1, m2)
def updateAmount(self, amount): if type(amount) is not Money: amount = Money(amount) self.amount = amount
def __init__(self, start_date, start_balance, transaction_store): self.start_date = start_date self.start_balance = Money(start_balance) self.transaction_store = transaction_store self.current_date = start_date self.current_balance = Money(start_balance)