예제 #1
0
class TestCalendarWithSpecialWorkdays:
    @classmethod
    def setup_class(cls):
        print('\n\nTesting Calendar with special workdays')

    def __init__(self):
        self.holidays = dict(
            hworkday=datetime.date(2018, 1, 1),
            hworkday_two=datetime.date(2018, 1, 2),
            hweekend_day=datetime.date(2018, 1, 7),
        )
        self.specdays = dict(
            sholiday=datetime.date(2018, 1, 2),
            sworkday=datetime.date(2018, 1, 5),
            ssaturday=datetime.date(2018, 1, 13),
        )
        self.busdays = [datetime.date(2018, 1, 14)]
        self.cal = Calendar(
            specdays=self.specdays.values(),
            holidays=self.holidays.values(),
            busdays=self.busdays,
        )
        self.cal.warn_on_holiday_exhaustion = False
        self.workdays = [
            datetime.date(2018, 1, i) for i in range(1, 15)
            if self.cal.isworkday(datetime.date(2018, 1, i))
            and not self.cal.isholiday(datetime.date(2018, 1, i))
        ]

    def test_isspecial(self):
        print('test_special')
        specdays = self.specdays.values()
        for sday in specdays:
            assert self.cal.isspecday(sday)
        for hday in self.holidays.values():
            if hday not in specdays:
                assert not self.cal.isspecday(hday)

    def test_special_days_are_also_busdays(self):
        print('test_special_days_are_also_busdays')
        for name, day in self.specdays.items():
            if not 'workday' in name:
                assert self.cal.isbusday(day)

    def test_busdaycount(self):
        print('test_busdaycount')
        nbusdays = self.cal.busdaycount(
            datetime.date(2018, 1, 1),
            datetime.date(2018, 1, 15),
        )
        assert nbusdays == 12

    def test_range(self):
        print('test_range')
        busdays = list(
            self.cal.range(
                datetime.date(2018, 1, 1),
                datetime.date(2018, 1, 15),
            ))
        check_busdays = [
            self.specdays['sholiday'], self.specdays['ssaturday'],
            self.busdays[0]
        ]
        check_busdays.extend(self.workdays)
        assert sorted(check_busdays) == busdays