def test_get_worker_list(): """test_get_worker_list.""" # TODO if we have enough time for setting test case... team = BaseTeam("team") w1 = BaseWorker("w1", cost_per_time=10.0) w2 = BaseWorker("w2", cost_per_time=5.0) team.worker_list = [w2, w1] assert ( len( team.get_worker_list( name="test", ID="test", team_id="test", cost_per_time=99876, solo_working=True, workamount_skill_mean_map={}, workamount_skill_sd_map=[], facility_skill_map={}, state=BaseWorkerState.WORKING, cost_list=[], assigned_task_list=[], assigned_task_id_record=[], ) ) == 0 )
def test_has_facility_skill(): """test_has_facility_skill.""" w = BaseWorker("w1", "----") w.facility_skill_map = {"f1": 1.0, "f2": 0.0} assert w.has_facility_skill("f1") assert not w.has_facility_skill("f2") assert not w.has_facility_skill("f3")
def test_remove_insert_absence_time_list(): """test_remove_insert_absence_time_list.""" w1 = BaseWorker("w1", "----") w1.cost_list = [1.0, 0.0, 1.0, 0.0, 0.0, 1.0] w1.assigned_task_id_record = ["aa", "bb", "cc", "dd", "ee", "ff"] w1.state_record_list = [2, 1, 2, 1, 1, 2] w2 = BaseWorker("w1", "----") w2.cost_list = [1.0, 0.0, 1.0, 0.0, 0.0, 1.0] w2.assigned_task_id_record = ["aa", "bb", "cc", "dd", "ee", "ff"] w2.state_record_list = [2, 1, 2, 1, 1, 2] team = BaseTeam("aa", worker_list=[w1, w2]) team.cost_list = [2.0, 0.0, 2.0, 0.0, 0.0, 2.0] absence_time_list = [1, 3, 4] team.remove_absence_time_list(absence_time_list) assert team.cost_list == [2.0, 2.0, 2.0] assert w1.cost_list == [1.0, 1.0, 1.0] assert w1.assigned_task_id_record == ["aa", "cc", "ff"] assert w1.state_record_list == [2, 2, 2] assert w2.cost_list == [1.0, 1.0, 1.0] assert w2.assigned_task_id_record == ["aa", "cc", "ff"] assert w2.state_record_list == [2, 2, 2] team.insert_absence_time_list(absence_time_list) assert team.cost_list == [2.0, 0.0, 2.0, 0.0, 0.0, 2.0] assert w1.cost_list == [1.0, 0.0, 1.0, 0.0, 0.0, 1.0] assert w1.assigned_task_id_record == ["aa", "aa", "cc", "cc", "cc", "ff"] assert w1.state_record_list == [2, 0, 2, 0, 0, 2] assert w2.cost_list == [1.0, 0.0, 1.0, 0.0, 0.0, 1.0] assert w2.assigned_task_id_record == ["aa", "aa", "cc", "cc", "cc", "ff"] assert w2.state_record_list == [2, 0, 2, 0, 0, 2]
def test_has_facility_skill(): w = BaseWorker("w1", "----") # w.set_workamount_skill_mean_map( # {"task1": 1.0, "task2": 0.0}, update_other_skill_info=True # ) w.facility_skill_map = {"f1": 1.0, "f2": 0.0} assert w.has_facility_skill("f1") assert not w.has_facility_skill("f2") assert not w.has_facility_skill("f3")
def test_has_workamount_skill(): """test_has_workamount_skill.""" w = BaseWorker("w1", "----") # w.set_workamount_skill_mean_map( # {"task1": 1.0, "task2": 0.0}, update_other_skill_info=True # ) w.workamount_skill_mean_map = {"task1": 1.0, "task2": 0.0} assert w.has_workamount_skill("task1") assert not w.has_workamount_skill("task2") assert not w.has_workamount_skill("task3")
def test_initialize(): """test_initialize.""" team = BaseTeam("team") team.cost_list = [9.0, 7.2] w = BaseWorker("w1") team.worker_list = [w] w.state = BaseWorkerState.WORKING w.cost_list = [9.0, 7.2] w.assigned_task_list = [BaseTask("task")] team.initialize() assert team.cost_list == [] assert w.state == BaseWorkerState.FREE assert w.cost_list == [] assert w.assigned_task_list == []
def test_perform(): auto = BaseTask("a", auto_task=True, state=BaseTaskState.WORKING) auto.perform(0, seed=1234) assert auto.remaining_work_amount == auto.default_work_amount - 1 task = BaseTask("task") task.state = BaseTaskState.READY w1 = BaseWorker("w1") w2 = BaseWorker("w2") w1.workamount_skill_mean_map = {"task": 1.0} task.allocated_worker_list = [w1, w2] w1.assigned_task_list = [task] w2.assigned_task_list = [task] c = BaseComponent("a") c.append_targeted_task(task) task.perform(10) assert task.remaining_work_amount == task.default_work_amount assert task.target_component == c # assert c.error == 0.0 task.state = BaseTaskState.WORKING task.perform(10) assert task.remaining_work_amount == task.default_work_amount - 1.0 assert task.target_component == c # assert c.error == 0.0 # Next test case w1.workamount_skill_sd_map = {"task": 0.2} # w1.quality_skill_mean_map = {"task": 0.9} # w1.quality_skill_sd_map = {"task": 0.02} task.perform(11, seed=1234) assert task.remaining_work_amount == 7.905712967253502
def dummy_organization(scope="function"): """dummy_organization.""" c1 = BaseTeam("c1") w11 = BaseWorker("w11", cost_per_time=10.0) w12 = BaseWorker("w12", cost_per_time=5.0) w11.state_record_list = [ BaseWorkerState.WORKING, BaseWorkerState.WORKING, BaseWorkerState.FREE, BaseWorkerState.WORKING, BaseWorkerState.FREE, BaseWorkerState.FREE, ] w12.state_record_list = [ BaseWorkerState.WORKING, BaseWorkerState.WORKING, BaseWorkerState.FREE, BaseWorkerState.WORKING, BaseWorkerState.FREE, BaseWorkerState.FREE, ] c1.worker_list = [w11, w12] c2 = BaseTeam("c2") w2 = BaseWorker("w2", cost_per_time=5.0) w2.state_record_list = [ BaseWorkerState.WORKING, BaseWorkerState.WORKING, BaseWorkerState.FREE, BaseWorkerState.WORKING, BaseWorkerState.FREE, BaseWorkerState.FREE, ] c2.worker_list = [w2] c2.parent_team = c1 f = BaseFacility("f", cost_per_time=20.0) f.state_record_list = [ BaseFacilityState.WORKING, BaseFacilityState.WORKING, BaseFacilityState.FREE, BaseFacilityState.WORKING, BaseFacilityState.FREE, BaseFacilityState.FREE, ] workplace = BaseWorkplace("workplace", facility_list=[f]) dummy_workplace = BaseWorkplace("dummy") workplace.parent_workplace = dummy_workplace organization = BaseOrganization( team_list=[c1, c2], workplace_list=[workplace, dummy_workplace]) return organization
def test_initialize(): """test_initialize.""" task = BaseTask("task") task.est = 2.0 task.eft = 10.0 task.lst = 3.0 task.lft = 11.0 task.remaining_work_amount = 7 # task.actual_work_amount = 6 task.state = BaseTaskState.READY # task.additional_task_flag = True task.allocated_worker_list = [BaseWorker("w1")] task.initialize() assert task.est == 0.0 assert task.eft == 0.0 assert task.lst == -1.0 assert task.lft == -1.0 assert task.remaining_work_amount == task.default_work_amount * ( 1.0 - task.default_progress ) # assert task.actual_work_amount == task.default_work_amount * ( # 1.0 - task.default_progress # ) assert task.state == BaseTaskState.NONE # assert task.additional_task_flag is False assert task.allocated_worker_list == [] task = BaseTask("task", default_progress=0.2) task.initialize() assert task.state == BaseTaskState.READY task = BaseTask("task", default_progress=1.0) task.initialize() assert task.state == BaseTaskState.FINISHED
def test_add_worker(): """test_add_worker.""" team = BaseTeam("team") worker = BaseWorker("worker") team.add_worker(worker) assert len(team.worker_list) == 1 assert worker.team_id == team.ID
def test_init(): """test_init.""" team = BaseTeam("team") assert team.name == "team" assert len(team.ID) > 0 assert team.worker_list == [] assert team.targeted_task_list == [] assert team.parent_team is None assert team.cost_list == [] team.cost_list.append(1) assert team.cost_list == [1.0] w1 = BaseWorker("w1") t1 = BaseTask("task1") team1 = BaseTeam( "team1", parent_team=team, targeted_task_list=[t1], worker_list=[w1], cost_list=[10], ) assert team1.worker_list == [w1] assert team1.targeted_task_list == [t1] assert team1.parent_team == team assert team1.cost_list == [10]
def test_init(dummy_worker): """test_init.""" # team = BaseTeam("team") assert dummy_worker.name == "wsss" assert dummy_worker.team_id == "---" assert dummy_worker.cost_per_time == 0.0 assert not dummy_worker.solo_working assert dummy_worker.workamount_skill_mean_map == {} assert dummy_worker.workamount_skill_sd_map == {} assert dummy_worker.facility_skill_map == {} assert dummy_worker.state == BaseWorkerState.FREE assert dummy_worker.cost_list == [] assert dummy_worker.assigned_task_list == [] w = BaseWorker( "w1", solo_working=True, state=BaseWorkerState.WORKING, cost_list=[10, 10], state_record_list=["a"], assigned_task_list=[BaseTask("task")], assigned_task_id_record=[[], ["ss"]], ) assert w.name == "w1" assert w.team_id is None assert w.cost_per_time == 0.0 assert w.solo_working assert w.workamount_skill_mean_map == {} assert w.workamount_skill_sd_map == {} assert w.facility_skill_map == {} assert w.state == BaseWorkerState.WORKING assert w.cost_list == [10, 10] assert w.assigned_task_list[0].name == "task" assert w.assigned_task_id_record == [[], ["ss"]]
def test_perform(): """test_perform.""" task = BaseTask("task") task.state = BaseTaskState.WORKING w1 = BaseWorker("w1") w2 = BaseWorker("w2") w1.workamount_skill_mean_map = {"task": 1.0} task.allocated_worker_list = [w1, w2] w1.assigned_task_list = [task] w2.assigned_task_list = [task] c = BaseComponent("a") c.append_targeted_task(task) auto_task = BaseTask("auto", auto_task=True) auto_task.state = BaseTaskState.WORKING w = BaseWorkflow([task, auto_task]) w.perform(10) assert task.remaining_work_amount == task.default_work_amount - 1.0 assert auto_task.remaining_work_amount == auto_task.default_work_amount - 1.0 assert task.target_component == c # autotask testing w.initialize() task.state = BaseTaskState.WORKING auto_task.state = BaseTaskState.WORKING w.perform(10, only_auto_task=True) assert task.remaining_work_amount == task.default_work_amount assert auto_task.remaining_work_amount == auto_task.default_work_amount - 1.0
def test_initialize(): team = BaseTeam("team") w = BaseWorker("w1", team_id=team.ID) w.state = BaseResourceState.WORKING w.cost_list = [9.0, 7.2] w.start_time_list = [0] w.finish_time_list = [1] w.assigned_task_list = [BaseTask("task")] w.initialize() assert w.state == BaseResourceState.FREE assert w.cost_list == [] assert w.start_time_list == [] assert w.finish_time_list == [] assert w.assigned_task_list == []
def test_get_time_list_for_gannt_chart(): w = BaseWorker("w1", "----") w.state_record_list = [ BaseWorkerState.FREE, BaseWorkerState.FREE, BaseWorkerState.WORKING, ] ready_time_list, working_time_list = w.get_time_list_for_gannt_chart() assert ready_time_list == [(0, 2)] assert working_time_list == [(2, 1)] w.state_record_list = [ BaseWorkerState.WORKING, BaseWorkerState.WORKING, BaseWorkerState.FREE, ] ready_time_list, working_time_list = w.get_time_list_for_gannt_chart() assert ready_time_list == [(2, 1)] assert working_time_list == [(0, 2)] w.state_record_list = [ BaseWorkerState.WORKING, BaseWorkerState.WORKING, BaseWorkerState.WORKING, ] ready_time_list, working_time_list = w.get_time_list_for_gannt_chart() assert ready_time_list == [] assert working_time_list == [(0, 3)] # for backward w.state_record_list = [ BaseWorkerState.FREE, BaseWorkerState.WORKING, BaseWorkerState.WORKING, BaseWorkerState.WORKING, BaseWorkerState.FREE, BaseWorkerState.FREE, BaseWorkerState.FREE, BaseWorkerState.WORKING, ] ready_time_list, working_time_list = w.get_time_list_for_gannt_chart() assert ready_time_list == [(0, 1), (4, 3)] assert working_time_list == [(1, 3), (7, 1)]
def test_remove_insert_absence_time_list(): """test_remove_insert_absence_time_list.""" w = BaseWorker("w1", "----") w.cost_list = [1.0, 0.0, 1.0, 0.0, 0.0, 1.0] w.assigned_task_id_record = ["aa", "bb", "cc", "dd", "ee", "ff"] w.state_record_list = [2, 1, 2, 1, 1, 2] absence_time_list = [1, 3, 4] w.remove_absence_time_list(absence_time_list) assert w.cost_list == [1.0, 1.0, 1.0] assert w.assigned_task_id_record == ["aa", "cc", "ff"] assert w.state_record_list == [2, 2, 2] w.insert_absence_time_list(absence_time_list) assert w.cost_list == [1.0, 0.0, 1.0, 0.0, 0.0, 1.0] assert w.assigned_task_id_record == ["aa", "aa", "cc", "cc", "cc", "ff"] assert w.state_record_list == [2, 0, 2, 0, 0, 2]
def dummy_simple_project(scope="function"): c = BaseComponent("c", space_size=1.0) task1 = BaseTask("task1", default_work_amount=2.0) task2 = BaseTask("task2", default_work_amount=2.0) auto_task2 = BaseTask("auto_task2", auto_task=True, default_work_amount=2.0) task2.append_input_task(auto_task2) task3 = BaseTask("task3", default_work_amount=2.0) auto_task3 = BaseTask("auto_task3", auto_task=True, default_work_amount=4.0) task3.append_input_task(auto_task3) workflow = BaseWorkflow([task1, task2, task3, auto_task2, auto_task3]) c.extend_targeted_task_list([task1, task2, task3]) product = BaseProduct([c]) # BaseTeams in BaseOrganization team = BaseTeam("team") team.extend_targeted_task_list([task1, task2, task3]) # BaseWorkers in each BaseTeam w1 = BaseWorker("w1", team_id=team.ID) w1.workamount_skill_mean_map = { task1.name: 1.0, } team.add_worker(w1) w2 = BaseWorker("w1", team_id=team.ID) w2.workamount_skill_mean_map = { task2.name: 1.0, } team.add_worker(w2) w3 = BaseWorker("w3", team_id=team.ID) w3.workamount_skill_mean_map = { task3.name: 1.0, } team.add_worker(w3) project = BaseProject( init_datetime=datetime.datetime(2020, 4, 1, 8, 0, 0), unit_timedelta=datetime.timedelta(days=1), product=product, workflow=workflow, organization=BaseOrganization(team_list=[team]), ) return project
def test_create_data_for_gantt_plotly(): """test_create_data_for_gantt_plotly.""" team = BaseTeam("team") w1 = BaseWorker("w1", cost_per_time=10.0) w1.state_record_list = [ BaseWorkerState.WORKING, BaseWorkerState.WORKING, BaseWorkerState.FREE, BaseWorkerState.WORKING, BaseWorkerState.FREE, BaseWorkerState.FREE, ] w2 = BaseWorker("w2", cost_per_time=5.0) w2.state_record_list = [ BaseWorkerState.WORKING, BaseWorkerState.WORKING, BaseWorkerState.FREE, BaseWorkerState.WORKING, BaseWorkerState.FREE, BaseWorkerState.FREE, ] team.worker_list = [w1, w2] init_datetime = datetime.datetime(2020, 4, 1, 8, 0, 0) timedelta = datetime.timedelta(days=1) team.create_data_for_gantt_plotly(init_datetime, timedelta)
def test_create_data_for_cost_history_plotly(): """test_create_data_for_cost_history_plotly.""" team = BaseTeam("team") w1 = BaseWorker("w1", cost_per_time=10.0) w1.cost_list = [0, 0, 10, 10, 0, 10] w2 = BaseWorker("w2", cost_per_time=5.0) w2.cost_list = [5, 5, 0, 0, 5, 5] team.worker_list = [w1, w2] team.cost_list = list(map(sum, zip(w1.cost_list, w2.cost_list))) init_datetime = datetime.datetime(2020, 4, 1, 8, 0, 0) timedelta = datetime.timedelta(days=1) data = team.create_data_for_cost_history_plotly(init_datetime, timedelta) x = [ (init_datetime + time * timedelta).strftime("%Y-%m-%d %H:%M:%S") for time in range(len(team.cost_list)) ] # w1 assert data[0].name == w1.name assert data[0].x == tuple(x) assert data[0].y == tuple(w1.cost_list) # w2 assert data[1].name == w2.name assert data[1].x == tuple(x) assert data[1].y == tuple(w2.cost_list)
def test_create_gantt_plotly(tmpdir): """test_create_gantt_plotly.""" team = BaseTeam("team") w1 = BaseWorker("w1", cost_per_time=10.0) w1.state_record_list = [ BaseWorkerState.WORKING, BaseWorkerState.WORKING, BaseWorkerState.FREE, BaseWorkerState.WORKING, BaseWorkerState.FREE, BaseWorkerState.FREE, ] w2 = BaseWorker("w2", cost_per_time=5.0) w2.state_record_list = [ BaseWorkerState.WORKING, BaseWorkerState.WORKING, BaseWorkerState.FREE, BaseWorkerState.WORKING, BaseWorkerState.FREE, BaseWorkerState.FREE, ] team.worker_list = [w1, w2] init_datetime = datetime.datetime(2020, 4, 1, 8, 0, 0) timedelta = datetime.timedelta(days=1) team.create_gantt_plotly(init_datetime, timedelta) for ext in ["png", "html", "json"]: save_fig_path = os.path.join(str(tmpdir), "test." + ext) team.create_gantt_plotly(init_datetime, timedelta, save_fig_path=save_fig_path)
def test_initialize(): """test_initialize.""" team = BaseTeam("team") w = BaseWorker("w1", team_id=team.ID) w.state = BaseWorkerState.WORKING w.cost_list = [9.0, 7.2] w.assigned_task_list = [BaseTask("task")] w.initialize() assert w.state == BaseWorkerState.FREE assert w.cost_list == [] assert w.assigned_task_list == []
def test_init(): task = BaseTask("task") assert task.name == "task" assert len(task.ID) > 0 assert task.default_work_amount == 10.0 assert task.input_task_list == [] assert task.output_task_list == [] assert task.due_time == -1 assert task.allocated_team_list == [] assert task.target_component is None assert task.default_progress == 0.0 # assert task.additional_work_amount == 0.0 assert task.est == 0.0 assert task.eft == 0.0 assert task.lst == -1.0 assert task.lft == -1.0 assert task.remaining_work_amount == task.default_work_amount * ( 1.0 - task.default_progress) # assert task.actual_work_amount == task.default_work_amount * ( # 1.0 - task.default_progress # ) assert task.state == BaseTaskState.NONE assert task.ready_time_list == [] assert task.start_time_list == [] assert task.finish_time_list == [] # assert task.additional_task_flag is False assert task.allocated_worker_list == [] tb = BaseTask( "task_b1", remaining_work_amount=0.0, state=BaseTaskState.FINISHED, ready_time_list=[1], start_time_list=[2], finish_time_list=[5], allocated_worker_list=[BaseWorker("a")], allocated_worker_id_record=[["idid"]], allocated_facility_list=[BaseFacility("b")], allocated_facility_id_record=[["ibib"]], ) assert tb.remaining_work_amount == 0.0 assert tb.state == BaseTaskState.FINISHED assert tb.ready_time_list == [1] assert tb.start_time_list == [2] assert tb.finish_time_list == [5] assert tb.allocated_worker_list[0].name == "a" assert tb.allocated_worker_id_record == [["idid"]] assert tb.allocated_facility_list[0].name == "b" assert tb.allocated_facility_id_record == [["ibib"]]
def test_add_labor_cost(): """test_add_labor_cost.""" team = BaseTeam("team") w1 = BaseWorker("w1", cost_per_time=10.0) w2 = BaseWorker("w2", cost_per_time=5.0) team.worker_list = [w2, w1] w1.state = BaseWorkerState.WORKING w2.state = BaseWorkerState.FREE team.add_labor_cost() assert w1.cost_list == [10.0] assert w2.cost_list == [0.0] assert team.cost_list == [10.0] team.add_labor_cost(only_working=False) assert team.cost_list == [10.0, 15.0] assert w1.cost_list == [10.0, 10.0] assert w2.cost_list == [0.0, 5.0]
def test_initialize(): """test_initialize.""" task = BaseTask("task") task.est = 2.0 task.eft = 10.0 task.lst = 3.0 task.lft = 11.0 task.remaining_work_amount = 7 task.actual_work_amount = 6 task.state = BaseTaskState.FINISHED task.additional_task_flag = True task.allocated_worker_list = [BaseWorker("w1")] task_after1 = BaseTask("task_after1") task_after2 = BaseTask("task_after2", default_work_amount=5.0) task_after1.append_input_task(task) task_after2.append_input_task(task) w = BaseWorkflow([task, task_after1, task_after2]) w.critical_path_length = 100.0 w.initialize() assert w.critical_path_length == 20.0 assert w.task_list[0].est == 0.0 assert w.task_list[0].eft == 10.0 assert w.task_list[0].lst == 0.0 assert w.task_list[0].lft == 10.0 assert w.task_list[0].state == BaseTaskState.READY assert w.task_list[1].est == 10.0 assert w.task_list[1].eft == 20.0 assert w.task_list[1].lst == 10.0 assert w.task_list[1].lft == 20.0 assert w.task_list[1].state == BaseTaskState.NONE assert w.task_list[2].est == 10.0 assert w.task_list[2].eft == 15.0 assert w.task_list[2].lst == 15.0 assert w.task_list[2].lft == 20.0 assert w.task_list[2].state == BaseTaskState.NONE
def test_create_cost_history_plotly(tmpdir): """test_create_cost_history_plotly.""" team = BaseTeam("team") w1 = BaseWorker("w1", cost_per_time=10.0) w1.cost_list = [0, 0, 10, 10, 0, 10] w2 = BaseWorker("w2", cost_per_time=5.0) w2.cost_list = [5, 5, 0, 0, 5, 5] team.worker_list = [w1, w2] team.cost_list = list(map(sum, zip(w1.cost_list, w2.cost_list))) init_datetime = datetime.datetime(2020, 4, 1, 8, 0, 0) timedelta = datetime.timedelta(days=1) team.create_cost_history_plotly(init_datetime, timedelta) for ext in ["png", "html", "json"]: save_fig_path = os.path.join(str(tmpdir), "test." + ext) team.create_cost_history_plotly( init_datetime, timedelta, title="bbbbbbb", save_fig_path=save_fig_path )
def test_plot_simple_gantt(): """test_plot_simple_gantt.""" team = BaseTeam("team") w1 = BaseWorker("w1", cost_per_time=10.0) w1.state_record_list = [ BaseWorkerState.WORKING, BaseWorkerState.WORKING, BaseWorkerState.FREE, BaseWorkerState.WORKING, BaseWorkerState.FREE, BaseWorkerState.FREE, ] w2 = BaseWorker("w2", cost_per_time=5.0) w2.state_record_list = [ BaseWorkerState.WORKING, BaseWorkerState.WORKING, BaseWorkerState.FREE, BaseWorkerState.WORKING, BaseWorkerState.FREE, BaseWorkerState.FREE, ] team.worker_list = [w1, w2] team.plot_simple_gantt()
def test_str(): print(BaseWorker("w1"))
def test_get_work_amount_skill_progress(): w = BaseWorker("w1", "----") # w.set_workamount_skill_mean_map( # {"task1": 1.0, "task2": 0.0}, update_other_skill_info=True # ) w.workamount_skill_mean_map = {"task1": 1.0, "task2": 0.0} assert w.get_work_amount_skill_progress("task3") == 0.0 assert w.get_work_amount_skill_progress("task2") == 0.0 with pytest.raises(ZeroDivisionError): assert w.get_work_amount_skill_progress("task1") == 1.0 task1 = BaseTask("task1") task1.state = BaseTaskState.NONE w.assigned_task_list = [task1] with pytest.raises(ZeroDivisionError): assert w.get_work_amount_skill_progress("task1") == 1.0 task1.state = BaseTaskState.READY with pytest.raises(ZeroDivisionError): assert w.get_work_amount_skill_progress("task1") == 1.0 task1.state = BaseTaskState.WORKING_ADDITIONALLY assert w.get_work_amount_skill_progress("task1") == 1.0 task1.state = BaseTaskState.FINISHED with pytest.raises(ZeroDivisionError): assert w.get_work_amount_skill_progress("task1") == 1.0 task1.state = BaseTaskState.WORKING assert w.get_work_amount_skill_progress("task1") == 1.0 w.workamount_skill_sd_map["task1"] = 0.1 w.get_work_amount_skill_progress("task1", seed=1234) # seed test task2 = BaseTask("task2") task2.state = BaseTaskState.NONE w.assigned_task_list.append(task2) w.workamount_skill_sd_map["task1"] = 0.0 assert w.get_work_amount_skill_progress("task1") == 1.0 task2.state = BaseTaskState.WORKING assert w.get_work_amount_skill_progress("task1") == 0.5
def dummy_worker(): w = BaseWorker("wsss", team_id="---") return w
def test_remove_insert_absence_time_list(): """test_remove_insert_absence_time_list.""" f1 = BaseFacility("w1", "----") f1.cost_list = [1.0, 0.0, 1.0, 0.0, 0.0, 1.0] f1.assigned_task_id_record = ["aa", "bb", "cc", "dd", "ee", "ff"] f1.state_record_list = [2, 1, 2, 1, 1, 2] f2 = BaseFacility("w1", "----") f2.cost_list = [1.0, 0.0, 1.0, 0.0, 0.0, 1.0] f2.assigned_task_id_record = ["aa", "bb", "cc", "dd", "ee", "ff"] f2.state_record_list = [2, 1, 2, 1, 1, 2] workplace = BaseWorkplace("aa", facility_list=[f1, f2]) workplace.cost_list = [2.0, 0.0, 2.0, 0.0, 0.0, 2.0] w1 = BaseWorker("w1", "----") w1.cost_list = [1.0, 0.0, 1.0, 0.0, 0.0, 1.0] w1.assigned_task_id_record = ["aa", "bb", "cc", "dd", "ee", "ff"] w1.state_record_list = [2, 1, 2, 1, 1, 2] w2 = BaseWorker("w1", "----") w2.cost_list = [1.0, 0.0, 1.0, 0.0, 0.0, 1.0] w2.assigned_task_id_record = ["aa", "bb", "cc", "dd", "ee", "ff"] w2.state_record_list = [2, 1, 2, 1, 1, 2] team = BaseTeam("aa", worker_list=[w1, w2]) team.cost_list = [2.0, 0.0, 2.0, 0.0, 0.0, 2.0] organization = BaseOrganization(team_list=[team], workplace_list=[workplace]) organization.cost_list = [4.0, 0.0, 4.0, 0.0, 0.0, 4.0] absence_time_list = [1, 3, 4] organization.remove_absence_time_list(absence_time_list) assert organization.cost_list == [4.0, 4.0, 4.0] assert workplace.cost_list == [2.0, 2.0, 2.0] assert f1.cost_list == [1.0, 1.0, 1.0] assert f1.assigned_task_id_record == ["aa", "cc", "ff"] assert f1.state_record_list == [2, 2, 2] assert f2.cost_list == [1.0, 1.0, 1.0] assert f2.assigned_task_id_record == ["aa", "cc", "ff"] assert f2.state_record_list == [2, 2, 2] assert team.cost_list == [2.0, 2.0, 2.0] assert w1.cost_list == [1.0, 1.0, 1.0] assert w1.assigned_task_id_record == ["aa", "cc", "ff"] assert w1.state_record_list == [2, 2, 2] assert w2.cost_list == [1.0, 1.0, 1.0] assert w2.assigned_task_id_record == ["aa", "cc", "ff"] assert w2.state_record_list == [2, 2, 2] organization.insert_absence_time_list(absence_time_list) assert organization.cost_list == [4.0, 0.0, 4.0, 0.0, 0.0, 4.0] assert team.cost_list == [2.0, 0.0, 2.0, 0.0, 0.0, 2.0] assert w1.cost_list == [1.0, 0.0, 1.0, 0.0, 0.0, 1.0] assert w1.assigned_task_id_record == ["aa", "aa", "cc", "cc", "cc", "ff"] assert w1.state_record_list == [2, 0, 2, 0, 0, 2] assert w2.cost_list == [1.0, 0.0, 1.0, 0.0, 0.0, 1.0] assert w2.assigned_task_id_record == ["aa", "aa", "cc", "cc", "cc", "ff"] assert w2.state_record_list == [2, 0, 2, 0, 0, 2] assert workplace.cost_list == [2.0, 0.0, 2.0, 0.0, 0.0, 2.0] assert f1.cost_list == [1.0, 0.0, 1.0, 0.0, 0.0, 1.0] assert f1.assigned_task_id_record == ["aa", "aa", "cc", "cc", "cc", "ff"] assert f1.state_record_list == [2, 0, 2, 0, 0, 2] assert f2.cost_list == [1.0, 0.0, 1.0, 0.0, 0.0, 1.0] assert f2.assigned_task_id_record == ["aa", "aa", "cc", "cc", "cc", "ff"] assert f2.state_record_list == [2, 0, 2, 0, 0, 2]