Ejemplo n.º 1
0
 def testBareboneOverassignment(self):
     date_configs = [
         data_types.DateConfig(_START_DATE, 0, 1, 1),
         data_types.DateConfig(_END_DATE, 1, 1, 2)
     ]
     vt.ValidateOverassignment(self.assignment_dict,
                               date_configs,
                               self.errors,
                               barebone=True)
     self.assertEqual(len(self.errors), 1)
     self.assertEqual(
         self.errors[0],
         '1 workers are assigned for DAY on 2020-04-01, when there should be 0 workers'
     )
Ejemplo n.º 2
0
 def setUp(self):
     self.assignment_dict = {
         (_START_DATE, 'name1'): _DAY_SHIFT,
         (_END_DATE, 'name1'): _EVENING_SHIFT,
         (_START_DATE, 'name2'): _OFF_SHIFT,
         (_END_DATE, 'name2'): _NIGHT_SHIFT
     }
     self.person_configs = [
         data_types.PersonConfig('name1', 5, 3, 1, 30),
         data_types.PersonConfig('name2', 6, 4, 2, 20)
     ]
     self.date_configs = [
         data_types.DateConfig(_START_DATE, 1, 1, 1),
         data_types.DateConfig(_END_DATE, 1, 2, 1)
     ]
     self.all_dates = [_START_DATE, _END_DATE]
     self.errors = []
Ejemplo n.º 3
0
    def testWriteDateConfig(self):
        ws = self.ws
        dc1 = data_types.DateConfig(self.test_start_date, 3, 2, 1)
        dc2 = data_types.DateConfig(self.test_end_date, 6, 5, 4)
        excel_output.WriteDateConfigs(ws, [dc1, dc2], self.test_config)

        # Check header columns
        self.assertEqual(ws.cell(row=1, column=2).value, '데이 근무자 수')
        self.assertEqual(ws.cell(row=1, column=3).value, '이브닝 근무자 수')
        self.assertEqual(ws.cell(row=1, column=4).value, '나이트 근무자 수')

        # Check dates
        self.assertEqual(ws.cell(row=2, column=1).value, self.test_start_date)
        self.assertEqual(ws.cell(row=3, column=1).value, self.test_end_date)

        # Check all date config values are correct
        self.assertEqual(ws.cell(row=2, column=2).value, 3)
        self.assertEqual(ws.cell(row=2, column=3).value, 2)
        self.assertEqual(ws.cell(row=2, column=4).value, 1)
        self.assertEqual(ws.cell(row=3, column=2).value, 6)
        self.assertEqual(ws.cell(row=3, column=3).value, 5)
        self.assertEqual(ws.cell(row=3, column=4).value, 4)
Ejemplo n.º 4
0
 def testNonBareboneUnderAssignment(self):
     # Under-assignment causes error for non-barebone
     date_configs = [
         data_types.DateConfig(_START_DATE, 1, 1, 0),
         data_types.DateConfig(_END_DATE, 1, 1, 2)
     ]
     vt.ValidateOverassignment(self.assignment_dict,
                               date_configs,
                               self.errors,
                               barebone=False)
     self.assertEqual(len(self.errors), 3)
     self.assertEqual(
         self.errors[0],
         '0 workers are assigned for EVENING on 2020-04-01, when there should be 1 workers'
     )
     self.assertEqual(
         self.errors[1],
         '0 workers are assigned for DAY on 2020-04-02, when there should be 1 workers'
     )
     self.assertEqual(
         self.errors[2],
         '1 workers are assigned for NIGHT on 2020-04-02, when there should be 2 workers'
     )
Ejemplo n.º 5
0
def ReadDateConfig(ws, config, start_row=1, start_col=1):
    date_constraints = []

    total_dates = (config.end_date - config.start_date).days + 1
    for row_index in range(start_row + 1, start_row + total_dates + 1):
        date_cell = ws.cell(row=row_index, column=start_col)
        day_cell = ws.cell(row=row_index,
                           column=start_col + 1)  # Number of day shift workers
        evening_cell = ws.cell(row=row_index, column=start_col +
                               2)  # Number of evening shift workers
        night_cell = ws.cell(row=row_index, column=start_col +
                             3)  # Number of night shift workers

        date_constraint = data_types.DateConfig(
            excel_util.CellToDate(date_cell), day_cell.value,
            evening_cell.value, night_cell.value)
        date_constraints.append(date_constraint)

    return date_constraints
Ejemplo n.º 6
0
 def setUp(self):
     super().setUp()
     self.exact_match_date_configs = [
         data_types.DateConfig(_START_DATE, 1, 0, 0),
         data_types.DateConfig(_END_DATE, 0, 1, 1)
     ]