def test_more_calculations(self): periods = list() for y in range(5): for m in range(13): for d in list(range(5)) + list(range(25, 33)) + list( range(58, 66)): periods.append( BusinessPeriod( str(y) + 'y' + str(m) + 'm' + str(d) + 'd')) for d in self.dates: for p in periods: dp = d + p q = dp - d dq = d + q if d.day < 28 and p.days < 28: self.assertEqual(q, p, (q, d, p, dp)) # only idempotent pairs work always (e.g. above) self.assertEqual(dq, dp, (dq, d, p, dp, q)) self.assertEqual((dq - d), q, (dq - d, d, q, dq)) a = BusinessDate('20150228') for y in range(3): for m in range(0, 7, 5): for d in range(0, 13, 5): b = a + BusinessPeriod(years=y, months=m, days=d) self.assertEqual(-b._diff_in_days(a), a._diff_in_days(b))
def test_calculations(self): self.assertEqual(self.jan01._add_days(1), self.jan02) self.assertEqual(self.jan01._add_ymd(0, 1, 0), self.feb01) self.assertEqual(str(self.jan01._add_ymd(1, 0, 0)), '20170101') self.assertEqual(self.jan01.add_period('2D'), self.jan02 + BusinessPeriod('1D')) self.assertEqual(self.jan02.add_period('-2D'), self.jan01 - BusinessPeriod('1D')) self.assertEqual(self.jan02.add_period('-1b'), self.jan01 - BusinessPeriod('1b')) # self.assertNotEqual(BusinessDate(20160630).add_period(BusinessPeriod('2B')), # BusinessDate(20160630).add_period(BusinessPeriod('2B'), BusinessHolidays(['20160704']))) self.assertNotEqual( BusinessDate(20160630).add_period(BusinessPeriod('2B')), BusinessDate(20160630).add_period( BusinessPeriod('2B'), BusinessHolidays(BusinessDate(['20160704'])))) n = 111 a, b = BusinessDate(), BusinessDate() + BusinessPeriod(days=n) self.assertEqual(n, a._diff_in_days(b)) self.assertEqual(-n, b._diff_in_days(a)) a, b = BusinessDate(20150630), BusinessDate(20150630) + BusinessPeriod( years=1, months=27, days=46) self.assertEqual(1234, a._diff_in_days(b)) self.assertEqual(-1234, b._diff_in_days(a)) self.assertRaises(TypeError, BusinessDate().__add__, 'rtzwrwetzwe') self.assertRaises(TypeError, BusinessDate().__sub__, 'rtzwrwetzwe') self.assertEqual(self.jan01 + '1b', self.jan02 + '1b') d, p = BusinessDate('20160229'), BusinessPeriod('1Y1M1D') self.assertEqual((d + p - d), p, (d + p - d, d, p, d + p)) d, p = BusinessDate('20150129'), BusinessPeriod('1Y2M1D') self.assertEqual((d + p - d), p, (d + p - d, d, p, d + p)) d, p = BusinessDate('20150129'), BusinessPeriod('1Y1M1D') self.assertEqual((d + p - d), p, (d + p - d, d, p, d + p)) # non idepotent pairs d, p = BusinessDate('20150129'), BusinessPeriod('1M29D') # self.assertEqual((d + p - d), p, (d + p - d, d, p, d + p)) d, p = BusinessDate('20160129'), BusinessPeriod('1M29D')
def test_diff(self): s = BusinessDate('20160101') self.assertEqual( BusinessDate._diff_in_days(s, BusinessDate('20160102')), BusinessPeriod(days=1).days)