コード例 #1
0
class Test(unittest.TestCase):
    def setUp(self):
        GlobalRoleList.add_role(Role('Baker', 'B', 10))
        GlobalRoleList.add_role(Role('Steward', 'S', 9))
        GlobalRoleList.add_role(Role('Fisherman', 'F', 7))
        GlobalRoleList.add_role(Role('Cook', 'C', 7))
        self.institution = Institution()
        self.duration = Duration(self.institution)

        e = Event(self.duration)
        e.title = 'A'
        e.add_appointment(Appointment(e, role("C"), e))
        e.add_appointment(Appointment(e, role("S"), e))
        e.appointments[1].note = 'with car'
        e.add_appointment(Appointment(e, role("F"), e))
        e.add_appointment(Appointment(e, role("F"), e))
        e.appointments[3].disabled = True
        e.add_appointment(Appointment(e, role("F"), e))
        self.duration.events.append(e)

        e = Event(self.duration)
        e.title = 'B'
        e.add_appointment(Appointment(e, role("F"), e))
        e.add_appointment(Appointment(e, role("F"), e))
        e.appointments[1].note = 'with car'
        e.add_appointment(Appointment(e, role("S"), e))
        e.appointments[2].note = 'with car'
        e.add_appointment(Appointment(e, role("B"), e))
        self.duration.events.append(e)

    def tearDown(self):
        GlobalRoleList.clear()

    def testSavePopulation(self):
        self.institution.people.append(new_worker())
        saver = PopulationSavingObject(self.institution.people, 'temp_sheet.xls')
        saver.create()
        saver.populate()

    def testSaveLoadPopulation(self):
        self.institution.people.append(new_worker())
        saver = PopulationSavingObject(self.institution.people, 'temp_sheet.xls')
        saver.create()
        saver.populate()

        loader = PopulationSavingObject([], 'temp_sheet.xls')
        loaded_population = loader.load()

        self.assertEqual(len(loaded_population), 1)

        loaded_person = loaded_population[0]
        self.assertEqual(loaded_person.name, 'Bob')
        self.assertEqual(loaded_person.address, 'a')
        self.assertEqual(loaded_person.email, 'b')
        self.assertEqual(loaded_person.phone_number, '0115')

        self.assertEqual(len(loaded_person.roles()), 2)
        self.assertTrue(loaded_person.suitable_for_role('B'))
        self.assertTrue(loaded_person.suitable_for_role('S'))
        self.assertFalse(loaded_person.suitable_for_role('F'))

    def testLoadPopulation(self):
        GlobalRoleList.clear()
        GlobalRoleList.add_role(Role('Doctor', 'D', 10))
        GlobalRoleList.add_role(Role('GP', 'G', 8))
        GlobalRoleList.add_role(Role('Nurse', 'N', 10))
        GlobalRoleList.add_role(Role('Cook', 'C', 7))
        GlobalRoleList.add_role(Role('Reception', 'R', 5))

        loader = PopulationSavingObject([], 'test_population_sheet.xls')
        loaded_population = loader.load()

        self.assertEqual(len(loaded_population), 6)

        loaded_person = loaded_population[0]
        self.assertEqual(loaded_person.name, 'Mary')
        self.assertEqual(loaded_person.address, 'A34')
        self.assertEqual(loaded_person.email, 'b')
        self.assertEqual(loaded_person.phone_number, '122')

        self.assertEqual(len(loaded_person.roles()), 2)
        self.assertTrue(loaded_person.suitable_for_role('D'))
        self.assertTrue(loaded_person.suitable_for_role('N'))
        self.assertFalse(loaded_person.suitable_for_role('C'))

        loaded_person = loaded_population[1]
        self.assertEqual(loaded_person.name, 'Jane')
        self.assertEqual(loaded_person.address, 'B32')
        self.assertEqual(loaded_person.email, 'g')
        self.assertEqual(loaded_person.phone_number, '463')

        self.assertEqual(len(loaded_person.roles()), 1)
        self.assertFalse(loaded_person.suitable_for_role('D'))
        self.assertTrue(loaded_person.suitable_for_role('G'))
        self.assertFalse(loaded_person.suitable_for_role('C'))

        loaded_person = loaded_population[2]
        self.assertEqual(loaded_person.name, 'Mick')

        self.assertEqual(len(loaded_person.roles()), 1)
        self.assertFalse(loaded_person.suitable_for_role('D'))
        self.assertTrue(loaded_person.suitable_for_role('C'))
        self.assertFalse(loaded_person.suitable_for_role('G'))

        loaded_person = loaded_population[3]
        self.assertEqual(loaded_person.name, 'John')

        self.assertEqual(len(loaded_person.roles()), 2)
        self.assertTrue(loaded_person.suitable_for_role('R'))
        self.assertTrue(loaded_person.suitable_for_role('N'))
        self.assertFalse(loaded_person.suitable_for_role('D'))

        loaded_person = loaded_population[4]
        self.assertEqual(loaded_person.name, 'Gaz')

        self.assertEqual(len(loaded_person.roles()), 1)
        self.assertFalse(loaded_person.suitable_for_role('D'))
        self.assertFalse(loaded_person.suitable_for_role('N'))
        self.assertTrue(loaded_person.suitable_for_role('C'))

        loaded_person = loaded_population[5]
        self.assertEqual(loaded_person.name, 'Toby')
        self.assertEqual(loaded_person.address, 'C16')
        self.assertEqual(loaded_person.email, '')
        self.assertEqual(loaded_person.phone_number, '400')

        self.assertEqual(len(loaded_person.roles()), 2)
        self.assertTrue(loaded_person.suitable_for_role('D'))
        self.assertTrue(loaded_person.suitable_for_role('G'))
        self.assertFalse(loaded_person.suitable_for_role('N'))

    def testInvalidLoadPopulation(self):
        GlobalRoleList.clear()
        GlobalRoleList.add_role(Role('Doctor', 'D', 10))
        GlobalRoleList.add_role(Role('GP', 'G', 8))
        GlobalRoleList.add_role(Role('Nurse', 'N', 10))
        GlobalRoleList.add_role(Role('Cook', 'C', 7))
        GlobalRoleList.add_role(Role('Reception', 'R', 5))

        loader = PopulationSavingObject([], 'test_invalid_population_sheet.xls')
        self.assertRaises(ExcellImportExportError, loader.load)

    def testDurationCreation(self):
        saver = DurationSavingObject(self.duration, 'temp_sheet.xls')
        saver.create()
        saver.populate()

    def testDurationPopulation(self):
        bob = new_worker()
        self.duration.events[1].appointments[2].appoint(bob)
        saver = DurationSavingObject(self.duration, 'temp_sheet.xls')
        saver.create()
        saver.populate()

    def testDurationEventsLoading(self):
        saver = DurationSavingObject(self.duration, 'temp_sheet.xls')
        saver.create()
        saver.populate()
        loader = DurationSavingObject(Duration(self.institution),'temp_sheet.xls')
        events = loader.load_events()
        self.assertEqual(len(events), len(self.duration.events))
        self.assertEqual(events[0].title, self.duration.events[0].title)
        self.assertEqual(events[1].time, self.duration.events[1].time)
        self.assertEqual(events[0].date, self.duration.events[0].date)

    def testDurationDisabledAppointmentLoading(self):
        saver = DurationSavingObject(self.duration, 'temp_sheet.xls')
        saver.create()
        saver.populate()
        for a in self.duration.appointments():
            a.disabled = False
        disabled_appointments = [a for a in self.duration.appointments() if a.disabled]
        self.assertTrue(len(disabled_appointments) == 0)
        loader = DurationSavingObject(self.duration, 'temp_sheet.xls')
        loader.load()
        disabled_appointments = [a for a in self.duration.appointments() if a.disabled]
        self.assertFalse(len(disabled_appointments) == 0)


    def testDurationFilledAppointmentLoading(self):
        bob = new_worker()
        key_appointment = self.duration.events[1].appointments[2]
        key_appointment.appoint(bob)
        self.assertTrue(key_appointment.is_filled())
        saver = DurationSavingObject(self.duration, 'temp_sheet.xls')
        saver.create()
        saver.populate()
        key_appointment.vacate()
        self.assertFalse(key_appointment.is_filled())
        loader = DurationSavingObject(self.duration, 'temp_sheet.xls')
        loader.load([bob])
        self.assertTrue(key_appointment.is_filled())

    def testAppointmentLoading(self):
        bob = new_worker()
        filled_appointments = [a for a in self.duration.appointments() if a.is_filled()]
        self.assertTrue(len(filled_appointments) == 0)
        loader = DurationSavingObject(self.duration, 'test_appointing_sheet.xls')
        loader.load([bob])
        filled_appointments = [a for a in self.duration.appointments() if a.is_filled()]
        self.assertEqual(len(filled_appointments),3)

    def testInvalidAppointmentLoading(self):
        bob = new_worker()
        loader = DurationSavingObject(self.duration, 'test_invalid_appointing_sheet.xls')
        self.assertRaises(ExcellImportExportError, loader.load, [bob])