def test_switch_with_availability(self):
        """
        Tests switching person with availability check.
        """
        team_list = [u"alice", u"bob"]
        parser = DaysOffParser()
        scheduler = TeamRoundRobinScheduler(team_list, parser)

        # 2016-02-22 is a Monday
        parser.add(u"alice", [u"MON"])
        monday = datetime.date(2016, 2, 22)

        self.assertEqual((u"bob", 1), scheduler.switch_to_next_person(monday), u"The current person should be bob.")

        self.assertEqual((u"bob", 1), scheduler.switch_to_next_person(monday), u"The current person should be bob.")

        parser.remove(u"alice", [u"MON"])
        self.assertEqual((u"alice", 0), scheduler.switch_to_next_person(monday), u"The current person should be alice.")
    def test_set_get_current_person(self):
        """
        Tests setting and getting the current person.
        """
        team_list = [u"alice", u"bob"]
        parser = DaysOffParser()
        scheduler = TeamRoundRobinScheduler(team_list, parser)

        self.assertEqual((u"alice", 0), scheduler.get_current_person(), u"The current person should be alice.")
        self.assertEqual((u"bob", 1), scheduler.get_next_person(), u"The next person should be bob.")

        scheduler.set_current_person_idx(1)
        self.assertEqual((u"bob", 1), scheduler.get_current_person(), u"The current person should be bob.")
        self.assertEqual((u"alice", 0), scheduler.get_next_person(), u"The next person should be alice.")

        self.assertEqual((u"alice", 0), scheduler.switch_to_next_person(), u"The current person should be alice.")
    def test_check_availability(self):
        """
        Tests check_availability().
        """
        team_list = [u"alice", u"bob"]
        parser = DaysOffParser()
        scheduler = TeamRoundRobinScheduler(team_list, parser)

        self.assertTrue(
            scheduler.check_availability(u"alice", datetime.date.fromtimestamp(time.time())),
            u"alice should be available today.",
        )

        # 2016-02-22 is a Monday
        parser.add(u"alice", [u"MON"])
        self.assertFalse(
            scheduler.check_availability(u"alice", datetime.date(2016, 2, 22)),
            u"alice should not be available on 2016-02-22.",
        )

        self.assertTrue(
            scheduler.check_availability(u"charley", datetime.date(2016, 2, 22)),
            u"alice should not be available on 2016-02-22.",
        )