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' )
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 = []
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)
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' )
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
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) ]