class TestThreshold(unittest.TestCase): def setUp(self): today = date.today() self.last_month = [ Equity(today - timedelta(days=40), 100.0), Equity(today - timedelta(days=42), 100.0), Equity(today - timedelta(days=44), 100.0) ] self.last_month_value = 300 self.next_month = [ Equity(today + timedelta(days=46), 10.0), Equity(today + timedelta(days=48), 10.0) ] self.next_month_value = 20 self.next_year = [Equity(today + timedelta(days=365), 1.0)] self.next_year_value = 1 self.instance = EquityGroup(self.last_month + self.next_month + self.next_year) def test_normal_path(self): # To leave no more than 15.0 unvested, one of next_month needs to vest amount = 15.0 exp_result = Threshold(amount, self.next_month[0].date) result = self.instance.compute_threshold(amount) self.assertEqual(result, exp_result) def test_threshold_0(self): # To leave nothing unvested, everything needs to vest amount = 0.0 exp_result = Threshold(amount, self.next_year[0].date) result = self.instance.compute_threshold(amount) self.assertEqual(result, exp_result)
def setUp(self): today = date.today() self.last_month = [ Equity(today - timedelta(days=40), 100.0), Equity(today - timedelta(days=42), 100.0), Equity(today - timedelta(days=44), 100.0) ] self.last_month_value = 300 self.next_month = [ Equity(today + timedelta(days=46), 10.0), Equity(today + timedelta(days=48), 10.0) ] self.next_month_value = 20 self.next_year = [Equity(today + timedelta(days=365), 1.0)] self.next_year_value = 1 self.instance = EquityGroup(self.last_month + self.next_month + self.next_year)
def test_value_at_far_future(self): instance = EquityGroup(self.last_month + self.next_month + self.next_year) result = instance.value_at(date.today() + timedelta(weeks=100)) exp_result = self.last_month_value + self.next_month_value + self.next_year_value self.assertEqual(result, exp_result)
def test_value_at_past(self): instance = EquityGroup(self.last_month + self.next_month + self.next_year) result = instance.value_at(date.today() - timedelta(weeks=8)) exp_result = 0 self.assertEqual(result, exp_result)
def test_value_at_today(self): instance = EquityGroup(self.last_month + self.next_month + self.next_year) result = instance.value_at(date.today()) exp_result = self.last_month_value self.assertEqual(result, exp_result)
def test_vested_value(self): instance = EquityGroup(self.last_month + self.next_month + self.next_year) result = instance.vested_value() exp_result = self.last_month_value self.assertEqual(result, exp_result)
def test_total_value_group(self): instance = EquityGroup(self.last_month) self.assertEqual(instance.total_value(), self.last_month_value)
def test_total_value_single(self): single_equity = self.last_month[0] instance = EquityGroup([single_equity]) self.assertEqual(instance.total_value(), single_equity.value)
def test_total_value_empty(self): instance = EquityGroup([]) self.assertEqual(instance.total_value(), 0.0)