diff options
| -rw-r--r-- | python/dates.py | 19 | ||||
| -rw-r--r-- | python/tests/__init__.py | 0 | ||||
| -rw-r--r-- | python/tests/test_dates.py | 43 |
3 files changed, 32 insertions, 30 deletions
diff --git a/python/dates.py b/python/dates.py index 7d178f69..f45aac09 100644 --- a/python/dates.py +++ b/python/dates.py @@ -80,22 +80,3 @@ def yearfrac(date1, date2, daycount): return days_accrued.dt.days / 365 if daycount == "ACT/360": return days_accrued.dt.days / 360 - - -class TestDaysAccrued(unittest.TestCase): - def test(self): - dates = [ - ("2015-01-07", 17), - ("2015-06-19", 92), - ("2015-03-19", 0), - ("2015-06-20", 93), - ("2015-06-21", 0), - ("2015-12-21", 1), - ("2015-12-28", 8), - ] - for date, days in dates: - self.assertEqual(days_accrued(date), days) - - -if __name__ == "__main__": - unittest.main() diff --git a/python/tests/__init__.py b/python/tests/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/python/tests/__init__.py diff --git a/python/tests/test_dates.py b/python/tests/test_dates.py index 643a618c..85d631f8 100644 --- a/python/tests/test_dates.py +++ b/python/tests/test_dates.py @@ -4,9 +4,14 @@ import pandas as pd import sys sys.path.append('..') -from analytics.utils import * +from analytics.utils import roll_date from analytics.tranche_functions import cds_accrued -from pyisda.date import roll_date as roll_date_c, cds_accrued as cds_accrued_c, previous_twentieth +from pyisda.date import (roll_date as roll_date_c, + cds_accrued as cds_accrued_c, + previous_twentieth, + pydate_to_TDate, + TDate_to_pydate) +from dates import days_accrued class TestStartDate(unittest.TestCase): @@ -34,6 +39,7 @@ class TestStartDate(unittest.TestCase): self.assertEqual(previous_twentieth(pd.Timestamp('2017-03-19')), datetime.date(2016, 12, 20)) + class TestEndDate(unittest.TestCase): def test_enddate(self): self.assertEqual(roll_date(datetime.date(2016, 9, 20), 5), @@ -59,9 +65,8 @@ class TestEndDate(unittest.TestCase): self.assertEqual(roll_date(datetime.date(2015, 12, 20), 5), datetime.date(2020, 12, 20)) -class TestEndDateC(unittest.TestCase): - roll_date_c = lambda d, t: TDate_to_pydate(end_dates(pydate_to_TDate(d), t)) +class TestEndDateC(unittest.TestCase): def test_enddate(self): self.assertEqual(roll_date_c(datetime.date(2016, 9, 20), 5), datetime.date(2021, 12, 20)) @@ -86,30 +91,46 @@ class TestEndDateC(unittest.TestCase): self.assertEqual(roll_date_c(datetime.date(2015, 12, 20), 5), datetime.date(2020, 12, 20)) + class TestCdsAccrued(unittest.TestCase): def test_cdsaccrued(self): self.assertAlmostEqual(cds_accrued(datetime.date(2016, 4, 1), 100), - cds_accrued_c(datetime.date(2016, 4, 1), 100)) + cds_accrued_c(datetime.date(2016, 4, 1), 100)) self.assertAlmostEqual(cds_accrued(datetime.date(2016, 3, 21), 100), - 0.2777777777777778) + 0.2777777777777778) self.assertAlmostEqual(cds_accrued(datetime.date(2016, 3, 18), 100), - 24.72222222222222) + 24.72222222222222) #buggy # self.assertAlmostEqual(cds_accrued(datetime.date(2016, 9, 19), 100), # 0.) def test_cdsaccrued_c(self): self.assertAlmostEqual(cds_accrued_c(datetime.date(2016, 4, 1), 100), - 3.3333333333333) + 3.3333333333333) self.assertAlmostEqual(cds_accrued_c(datetime.date(2016, 3, 21), 100), - 0.27777777777777) + 0.27777777777777) self.assertAlmostEqual(cds_accrued_c(datetime.date(2016, 3, 18), 100), - 24.72222222222) + 24.72222222222) self.assertAlmostEqual(cds_accrued_c(datetime.date(2016, 9, 19), 100), 0.) self.assertAlmostEqual(cds_accrued_c(datetime.date(2014, 9, 19), 100), 25.55555555556) -if __name__=="__main__": +class TestDaysAccrued(unittest.TestCase): + def test_days_accrued(self): + dates = [ + ("2015-01-07", 17), + ("2015-06-19", 92), + ("2015-03-19", 0), + ("2015-06-20", 93), + ("2015-06-21", 0), + ("2015-12-21", 1), + ("2015-12-28", 8), + ] + for date, days in dates: + self.assertEqual(days_accrued(date), days) + + +if __name__ == "__main__": unittest.main() |
