예제 #1
0
def test_check_removing_placed_factory():
    c1 = BaseComponent("c1")
    task1 = BaseTask("task1")
    c1.append_targeted_task(task1)
    c2 = BaseComponent("c2")
    task2 = BaseTask("task2")
    c2.append_targeted_task(task2)
    product = BaseProduct([c1, c2])

    f1 = BaseFactory("f1")
    f2 = BaseFactory("f2")
    c1.placed_factory = f1
    c2.placed_factory = f2
    f1.set_placed_component(c1)
    f2.set_placed_component(c2)

    # case1
    task1.state = BaseTaskState.WORKING
    task2.state = BaseTaskState.FINISHED
    product.check_removing_placed_factory()
    assert c1.placed_factory.name == "f1"
    assert c2.placed_factory is None

    # case2
    task1.state = BaseTaskState.FINISHED
    task2.state = BaseTaskState.FINISHED
    c1.append_child_component(c2)
    c2.placed_factory = BaseFactory("f2")
    product.check_removing_placed_factory()
    assert c1.placed_factory is None
    assert c2.placed_factory is None
예제 #2
0
def test_check_removing_placed_workplace():
    """test_check_removing_placed_workplace."""
    c1 = BaseComponent("c1")
    task1 = BaseTask("task1")
    c1.append_targeted_task(task1)
    c2 = BaseComponent("c2")
    task2 = BaseTask("task2")
    c2.append_targeted_task(task2)
    product = BaseProduct([c1, c2])

    f1 = BaseWorkplace("f1")
    f2 = BaseWorkplace("f2")
    c1.placed_workplace = f1
    c2.placed_workplace = f2
    f1.set_placed_component(c1)
    f2.set_placed_component(c2)

    # case1
    task1.state = BaseTaskState.WORKING
    task2.state = BaseTaskState.FINISHED
    product.check_removing_placed_workplace()
    assert c1.placed_workplace.name == "f1"
    assert c2.placed_workplace is None

    # case2
    task1.state = BaseTaskState.FINISHED
    task2.state = BaseTaskState.FINISHED
    c1.append_child_component(c2)
    c1.placed_workplace = f1
    c2.placed_workplace = f1
    f1.placed_component_list = [c1, c2]
    product.check_removing_placed_workplace()
    assert c1.placed_workplace is None
    assert c2.placed_workplace is None
예제 #3
0
def test_append_child_component():
    c = BaseComponent("c")
    assert c.parent_component_list == []
    c1 = BaseComponent("c1")
    c2 = BaseComponent("c2")
    c.append_child_component(c1)
    c1.append_child_component(c2)
    assert c.child_component_list == [c1]
    assert c1.child_component_list == [c2]
    assert c2.parent_component_list == [c1]
    assert c1.parent_component_list == [c]
예제 #4
0
def test_remove_placed_component():
    """test_remove_placed_component."""
    c = BaseComponent("c")
    c1 = BaseComponent("c1")
    c2 = BaseComponent("c2")
    c.append_child_component(c1)
    c1.append_child_component(c2)
    workplace = BaseWorkplace("workplace")
    workplace.set_placed_component(c)
    assert workplace.placed_component_list == [c, c1, c2]
    workplace.remove_placed_component(c)
    assert workplace.placed_component_list == []
예제 #5
0
def test_set_placed_factory():
    c = BaseComponent("c")
    c1 = BaseComponent("c1")
    c2 = BaseComponent("c2")
    c.append_child_component(c1)
    c1.append_child_component(c2)
    factory = BaseFactory("factory")

    c.set_placed_factory(factory, set_to_all_children=False)
    assert c.placed_factory == factory
    assert c1.placed_factory is None
    assert c2.placed_factory is None

    c.set_placed_factory(factory, set_to_all_children=True)
    assert c.placed_factory == factory
    assert c1.placed_factory == factory
    assert c2.placed_factory == factory
예제 #6
0
def test_set_placed_workplace():
    """test_set_placed_workplace."""
    c = BaseComponent("c")
    c1 = BaseComponent("c1")
    c2 = BaseComponent("c2")
    c.append_child_component(c1)
    c1.append_child_component(c2)
    workplace = BaseWorkplace("workplace")

    c.set_placed_workplace(workplace, set_to_all_children=False)
    assert c.placed_workplace == workplace
    assert c1.placed_workplace is None
    assert c2.placed_workplace is None

    c.set_placed_workplace(workplace, set_to_all_children=True)
    assert c.placed_workplace == workplace
    assert c1.placed_workplace == workplace
    assert c2.placed_workplace == workplace
예제 #7
0
def test_remove_insert_absence_time_list():
    """test_remove_insert_absence_time_list."""
    c1 = BaseComponent("c1", "----")
    c1.placed_workplace_id_record = ["aa", "bb", "cc", "dd", "ee", "ff"]
    c1.state_record_list = [0, 1, 2, 3, 4, 5]

    c2 = BaseComponent("c2", "----")
    c2.placed_workplace_id_record = ["ff", "ee", "dd", "cc", "bb", "aa"]
    c2.state_record_list = [5, 4, 3, 2, 1, 0]
    c2.append_child_component(c1)

    product = BaseProduct([c1, c2])

    absence_time_list = [0, 1]
    product.remove_absence_time_list(absence_time_list)
    assert c1.placed_workplace_id_record == ["cc", "dd", "ee", "ff"]
    assert c1.state_record_list == [2, 3, 4, 5]
    assert c2.placed_workplace_id_record == ["dd", "cc", "bb", "aa"]
    assert c2.state_record_list == [3, 2, 1, 0]

    product.insert_absence_time_list(absence_time_list)
    assert c1.placed_workplace_id_record == [
        None, None, "cc", "dd", "ee", "ff"
    ]
    assert c1.state_record_list == [
        BaseComponentState.NONE,
        BaseComponentState.READY,
        2,
        3,
        4,
        5,
    ]
    assert c2.placed_workplace_id_record == [
        None, None, "dd", "cc", "bb", "aa"
    ]
    assert c2.state_record_list == [
        BaseComponentState.NONE,
        BaseComponentState.NONE,
        3,
        2,
        1,
        0,
    ]
예제 #8
0
def dummy_conveyor_project_with_child_component():
    """dummy_conveyor_project_with_child_component."""
    c1_1 = BaseComponent("c1_1")
    c1_2 = BaseComponent("c1_2")
    c2_1 = BaseComponent("c2_1")
    c2_2 = BaseComponent("c2_2")
    c3_1 = BaseComponent("c3_1")
    c3_2 = BaseComponent("c3_2")

    c1_2.append_child_component(c1_1)
    c2_2.append_child_component(c2_1)
    c3_2.append_child_component(c3_1)

    taskA1 = BaseTask("A1", need_facility=True, default_work_amount=6)
    taskA2 = BaseTask("A2", need_facility=True, default_work_amount=2)
    taskA3 = BaseTask("A3", need_facility=True, default_work_amount=2)
    taskB1 = BaseTask("B1", need_facility=True, default_work_amount=2)
    taskB2 = BaseTask("B2", need_facility=True, default_work_amount=7)
    taskB3 = BaseTask("B3", need_facility=True, default_work_amount=2)

    c1_1.append_targeted_task(taskA1)
    c1_2.append_targeted_task(taskB1)
    c2_1.append_targeted_task(taskA2)
    c2_2.append_targeted_task(taskB2)
    c3_1.append_targeted_task(taskA3)
    c3_2.append_targeted_task(taskB3)

    taskB1.append_input_task(taskA1)
    taskB2.append_input_task(taskA2)
    taskB3.append_input_task(taskA3)

    f1 = BaseFacility("f1")
    f1.workamount_skill_mean_map = {
        taskA1.name: 1.0,
        taskA2.name: 1.0,
        taskA3.name: 1.0,
    }

    f2 = BaseFacility("f2")
    f2.workamount_skill_mean_map = {
        taskA1.name: 1.0,
        taskA2.name: 1.0,
        taskA3.name: 1.0,
    }

    f3 = BaseFacility("f3")
    f3.workamount_skill_mean_map = {
        taskB1.name: 1.0,
        taskB2.name: 1.0,
        taskB3.name: 1.0,
    }
    f4 = BaseFacility("f4")
    f4.workamount_skill_mean_map = {
        taskB1.name: 1.0,
        taskB2.name: 1.0,
        taskB3.name: 1.0,
    }

    # Workplace in BaseOrganization
    wp1 = BaseWorkplace("workplace1", facility_list=[f1], max_space_size=1.0)
    wp1.extend_targeted_task_list([taskA1, taskA2, taskA3])
    wp2 = BaseWorkplace("workplace2", facility_list=[f2], max_space_size=2.0)
    wp2.extend_targeted_task_list([taskA1, taskA2, taskA3])
    wp3 = BaseWorkplace("workplace3", facility_list=[f3], max_space_size=4.0)
    wp3.extend_targeted_task_list([taskB1, taskB2, taskB3])
    wp4 = BaseWorkplace("workplace4", facility_list=[f4], max_space_size=4.0)
    wp4.extend_targeted_task_list([taskB1, taskB2, taskB3])

    wp3.append_input_workplace(wp1)
    wp4.append_input_workplace(wp2)

    # BaseTeams in BaseOrganization
    team = BaseTeam("team")
    team_list = [team]
    team.extend_targeted_task_list(
        [taskA1, taskA2, taskA3, taskB1, taskB2, taskB3])

    # BaseWorkers in each BaseTeam
    w1 = BaseWorker("w1", team_id=team.ID)
    w1.workamount_skill_mean_map = {
        taskA1.name: 1.0,
        taskA2.name: 1.0,
        taskA3.name: 1.0,
    }
    w1.facility_skill_map = {f1.name: 1.0}
    team.add_worker(w1)

    w2 = BaseWorker("w2", team_id=team.ID)
    w2.workamount_skill_mean_map = {
        taskA1.name: 1.0,
        taskA2.name: 1.0,
        taskA3.name: 1.0,
    }
    w2.facility_skill_map = {f2.name: 1.0}
    team.add_worker(w2)

    w3 = BaseWorker("w3", team_id=team.ID)
    w3.workamount_skill_mean_map = {
        taskB1.name: 1.0,
        taskB2.name: 1.0,
        taskB3.name: 1.0,
    }
    w3.facility_skill_map = {f3.name: 1.0}
    team.add_worker(w3)

    w4 = BaseWorker("w4", team_id=team.ID)
    w4.workamount_skill_mean_map = {
        taskB1.name: 1.0,
        taskB2.name: 1.0,
        taskB3.name: 1.0,
    }
    w4.facility_skill_map = {f4.name: 1.0}
    team.add_worker(w4)

    workplace_list = [wp1, wp2, wp3, wp4]
    # BaseProject including BaseProduct, BaseWorkflow and Organization
    project = BaseProject(
        init_datetime=datetime.datetime(2021, 8, 20, 8, 0, 0),
        unit_timedelta=datetime.timedelta(days=1),
        product=BaseProduct([c1_1, c1_2, c2_1, c2_2, c3_1, c3_2]),
        workflow=BaseWorkflow([taskA1, taskA2, taskA3, taskB1, taskB2,
                               taskB3]),
        organization=BaseOrganization(team_list, workplace_list),
    )
    return project