|
7 | 7 | USFederalHolidayCalendar, USMemorialDay, USThanksgivingDay,
|
8 | 8 | nearest_workday, next_monday_or_tuesday, next_monday,
|
9 | 9 | previous_friday, sunday_to_monday, Holiday, DateOffset,
|
10 |
| - MO, Timestamp, AbstractHolidayCalendar, get_calendar, |
| 10 | + MO, SA, Timestamp, AbstractHolidayCalendar, get_calendar, |
11 | 11 | HolidayCalendarFactory, next_workday, previous_workday,
|
12 | 12 | before_nearest_workday, EasterMonday, GoodFriday,
|
13 | 13 | after_nearest_workday, weekend_to_monday, USLaborDay,
|
@@ -358,7 +358,37 @@ def test_after_nearest_workday(self):
|
358 | 358 | self.assertEqual(after_nearest_workday(self.sa), self.mo)
|
359 | 359 | self.assertEqual(after_nearest_workday(self.su), self.tu)
|
360 | 360 | self.assertEqual(after_nearest_workday(self.fr), self.mo)
|
361 |
| - |
| 361 | + |
| 362 | +class TestFederalHolidayCalendar(tm.TestCase): |
| 363 | + |
| 364 | + # Test for issue 10278 |
| 365 | + def test_no_mlk_before_1984(self): |
| 366 | + class MLKCalendar(AbstractHolidayCalendar): |
| 367 | + rules=[USMartinLutherKingJr] |
| 368 | + holidays = MLKCalendar().holidays(start='1984', end='1988').to_pydatetime().tolist() |
| 369 | + # Testing to make sure holiday is not incorrectly observed before 1986 |
| 370 | + self.assertEqual(holidays, [datetime(1986, 1, 20, 0, 0), datetime(1987, 1, 19, 0, 0)]) |
| 371 | + |
| 372 | + def test_memorial_day(self): |
| 373 | + class MemorialDay(AbstractHolidayCalendar): |
| 374 | + rules=[USMemorialDay] |
| 375 | + holidays = MemorialDay().holidays(start='1971', end='1980').to_pydatetime().tolist() |
| 376 | + # Fixes 5/31 error and checked manually against wikipedia |
| 377 | + self.assertEqual(holidays, [datetime(1971, 5, 31, 0, 0), datetime(1972, 5, 29, 0, 0), |
| 378 | + datetime(1973, 5, 28, 0, 0), datetime(1974, 5, 27, 0, 0), |
| 379 | + datetime(1975, 5, 26, 0, 0), datetime(1976, 5, 31, 0, 0), |
| 380 | + datetime(1977, 5, 30, 0, 0), datetime(1978, 5, 29, 0, 0), |
| 381 | + datetime(1979, 5, 28, 0, 0)]) |
| 382 | + |
| 383 | +class TestHolidayConflictingArguments(tm.TestCase): |
| 384 | + |
| 385 | + # GH 10217 |
| 386 | + |
| 387 | + def test_both_offset_observance_raises(self): |
| 388 | + |
| 389 | + with self.assertRaises(NotImplementedError) as cm: |
| 390 | + h = Holiday("Cyber Monday", month=11, day=1, |
| 391 | + offset=[DateOffset(weekday=SA(4))], observance=next_monday) |
362 | 392 |
|
363 | 393 | if __name__ == '__main__':
|
364 | 394 | nose.runmodule(argv=[__file__, '-vvs', '-x', '--pdb', '--pdb-failure'],
|
|
0 commit comments