def test_operators(self): self.assertEqual(self.jan01 + '2D', self.jan02 + '1D') self.assertEqual(self.jan01 - '1D', self.jan02 - '2D') self.assertEqual(self.jan02 - '1D' + '1M', self.feb01) self.assertRaises(TypeError, lambda: '1D' + self.jan02) self.assertEqual(self.jan01 - BusinessPeriod('1D'), self.jan02 - '2D') self.assertRaises(TypeError, lambda: BusinessPeriod('1D') + self.jan02) self.assertRaises(TypeError, lambda: BusinessPeriod('1D') - self.jan01) self.assertEqual( self.dec31.add_period(BusinessPeriod('2B', BusinessHolidays())), self.dec31.add_period(BusinessPeriod('2B'), BusinessHolidays([self.jan02])))
def test_calculations(self): self.assertEqual(self.jan01.add_days(1), self.jan02) self.assertEqual(self.jan01.add_months(1), self.feb01) self.assertEqual(self.jan01.add_years(1).to_string(), '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.assertEqual(self.jan01 + '1b', self.jan02 + '1b') rng = list(range(1, 10)) periods = list() for y in rng: for m in rng: for d in rng: periods.append( BusinessPeriod( str(y) + 'y' + str(m) + 'm' + str(d) + 'd')) for d in self.dates: for p in periods: c = d + p self.assertEqual((c - d), BusinessPeriod(p), (c, d, c - d, p)) d = BusinessDate(20160229) self.assertEqual(d + '1y' + '1m', BusinessDate(20170328)) self.assertEqual(d + '1m' + '1y', BusinessDate(20170329)) self.assertEqual(d + '1y1m', BusinessDate(20170329))
def test_holiday(self): h = BusinessHolidays(self.list) for l in self.list: self.assertTrue(BusinessDate(l) in h) self.assertTrue(BusinessDate(l).to_date() in h) self.assertNotEqual(self.bd.add_period('3b', h), self.bd.add_period('3b'))
def test_calculations(self): self.assertEqual(self.jan01.add_days(1), self.jan02) self.assertEqual(self.jan01.add_months(1), self.feb01) self.assertEqual(self.jan01.add_years(1).to_string(), '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.assertEqual(self.jan01 + '1b', self.jan02 + '1b')
def test_operators(self): self.assertEqual(self.jan01 + '2D', self.jan02 + '1D') self.assertEqual(self.jan01 - '1D', self.jan02 - '2D') self.assertEqual(self.jan02 - '1D' + '1M', self.feb01) self.assertRaises(TypeError, lambda: '1D' + self.jan02) self.assertEqual(self.jan01 - BusinessPeriod('1D'), self.jan02 - '2D') self.assertRaises(TypeError, lambda: BusinessPeriod('1D') + self.jan02) self.assertRaises(TypeError, lambda: BusinessPeriod('1D') - self.jan01) self.assertEqual( self.dec31_15.add_period(BusinessPeriod('2B'), BusinessHolidays()), self.dec31_15.add_period(BusinessPeriod('2B'), BusinessHolidays([self.jan02]))) d = BusinessDate(20160229) self.assertEqual(d + '1y' + '1m', BusinessDate(20170328)) self.assertEqual(d + '1m' + '1y', BusinessDate(20170329)) self.assertEqual(d + '1y1m', BusinessDate(20170329)) self.assertEqual(d + ['1y', '1m'], [BusinessDate(20170228), BusinessDate(20160329)]) self.assertEqual(d - ['-1y', '-1m'], [BusinessDate(20170228), BusinessDate(20160329)])
def test_is_business_date(self): d = self.dec31 holi = BusinessHolidays() bdate = BusinessDate.from_ymd(2016, 1, 1) is_bday_empty_calendar = bdate.is_business_day(holi) self.assertTrue(is_bday_empty_calendar) is_bday_default_calendar = bdate.is_business_day() self.assertFalse(is_bday_default_calendar) target_a = BusinessDate.from_ymd(2016, 1, 4) a = d.add_business_days(2, holi) self.assertEqual(target_a, a) target_b = BusinessDate.from_ymd(2016, 1, 5) b = d.add_business_days( 2) # default holidays contains the target days, i.e. the 1.1.2016 self.assertEqual(target_b, 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')