Source code for tests.model.test_base_component

#!/usr/bin/python
# -*- coding: utf-8 -*-
"""test_base_component."""

import datetime

from pDESy.model.base_component import BaseComponent, BaseComponentState
from pDESy.model.base_task import BaseTask, BaseTaskState
from pDESy.model.base_workplace import BaseWorkplace

import pytest


[docs] def test_init(): """test_init.""" c1 = BaseComponent("c1") assert c1.name == "c1" assert len(c1.ID) > 0 assert c1.error_tolerance == 0.0 assert c1.error == 0.0 c2 = BaseComponent("c2") task = BaseTask("task") c = BaseComponent( "c", ID="xx88xx", child_component_list=[c1], parent_component_list=[c2], targeted_task_list=[task], space_size=2.0, state=BaseComponentState.FINISHED, state_record_list=["aa"], error_tolerance=0.1, error=0.0, placed_workplace=BaseWorkplace("t"), placed_workplace_id_record=["fff"], ) assert c.name == "c" assert c.ID == "xx88xx" assert c.child_component_list == [c1] assert c.parent_component_list == [c2] assert c.targeted_task_list == [task] assert c.space_size == 2.0 assert c.placed_workplace.name == "t" assert c.placed_workplace_id_record == ["fff"] assert c.error_tolerance == 0.1 assert c.error == 0.0
[docs] def test_extend_child_component_list(): """test_extend_child_component_list.""" c = BaseComponent("c") assert c.parent_component_list == [] c1 = BaseComponent("c1") c2 = BaseComponent("c2") c.extend_child_component_list([c1, c2]) assert c.child_component_list == [c1, c2] assert c1.parent_component_list == [c] assert c2.parent_component_list == [c]
[docs] def test_append_child_component(): """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]
[docs] 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
[docs] def test_is_ready(): """test_is_ready.""" c = BaseComponent("c") task1 = BaseTask("task1") task2 = BaseTask("task2") c.extend_targeted_task_list([task1, task2]) assert c.is_ready() is False # case 1 task1.state = BaseTaskState.READY assert c.is_ready() is True # case 2 task2.state = BaseTaskState.WORKING assert c.is_ready() is False # case 3 task2.state = BaseTaskState.FINISHED assert c.is_ready() is True # case 4 task1.state = BaseTaskState.FINISHED task2.state = BaseTaskState.FINISHED assert c.is_ready() is False
[docs] def test_extend_targeted_task_list(): """test_extend_targeted_task_list.""" c = BaseComponent("c") assert c.parent_component_list == [] task1 = BaseTask("task1") task2 = BaseTask("task2") c.extend_targeted_task_list([task1, task2]) assert c.targeted_task_list == [task1, task2] assert task1.target_component == c assert task2.target_component == c
[docs] def test_update_error_value(): """test_update_error_value.""" c = BaseComponent("c") c.update_error_value(0.9, 1.0, seed=32) # seed==32 -> rand()=0.85 assert c.error == 0.0 c.update_error_value(0.4, 0.5, seed=32) # seed==32 -> rand()=0.85 assert c.error == 0.5 c.update_error_value(0.4, 0.5)
[docs] def test_append_targeted_task(): """test_append_targeted_task.""" c = BaseComponent("c") assert c.parent_component_list == [] task = BaseTask("task1") assert task.target_component is None c.append_targeted_task(task) assert c.targeted_task_list == [task] assert task.target_component == c
[docs] def test_initialize(): """test_initialize.""" """test_initialize.""" c = BaseComponent("c", error_tolerance=0.1) c.error += 1 assert c.error == 1 c.initialize() assert c.error == 0
[docs] def test_str(): """test_str.""" print(BaseComponent("c1"))
[docs] def test_create_data_for_gantt_plotly(): """test_create_data_for_gantt_plotly.""" c = BaseComponent("c") c.state_record_list = [ BaseComponentState.WORKING, BaseComponentState.FINISHED, BaseComponentState.FINISHED, BaseComponentState.FINISHED, BaseComponentState.FINISHED, ] init_datetime = datetime.datetime(2020, 4, 1, 8, 0, 0) timedelta = datetime.timedelta(days=1) c.create_data_for_gantt_plotly(init_datetime, timedelta)
[docs] def test_remove_insert_absence_time_list(): """test_remove_insert_absence_time_list.""" w = BaseComponent("w1", "----") w.placed_workplace_id_record = ["aa", "bb", "cc", "dd", "ee", "ff"] w.state_record_list = [0, 1, 2, 3, 4, 5] absence_time_list = [0, 1] w.remove_absence_time_list(absence_time_list) assert w.placed_workplace_id_record == ["cc", "dd", "ee", "ff"] assert w.state_record_list == [2, 3, 4, 5] w.insert_absence_time_list(absence_time_list) assert w.placed_workplace_id_record == [None, None, "cc", "dd", "ee", "ff"] assert w.state_record_list == [ BaseComponentState.NONE, BaseComponentState.READY, 2, 3, 4, 5, ]
[docs] def test_get_time_list_for_gannt_chart(): w = BaseComponent("w1", "----") w.state_record_list = [ BaseComponentState.NONE, BaseComponentState.READY, BaseComponentState.WORKING, ] ready_time_list, working_time_list = w.get_time_list_for_gannt_chart() assert ready_time_list == [(1, 1)] assert working_time_list == [(2, 1)] w.state_record_list = [ BaseComponentState.NONE, BaseComponentState.READY, BaseComponentState.READY, ] ready_time_list, working_time_list = w.get_time_list_for_gannt_chart() assert ready_time_list == [(1, 2)] assert working_time_list == [] w.state_record_list = [ BaseComponentState.NONE, BaseComponentState.WORKING, BaseComponentState.FINISHED, ] ready_time_list, working_time_list = w.get_time_list_for_gannt_chart() assert ready_time_list == [] assert working_time_list == [(1, 1)] # for backward w.state_record_list = [ BaseComponentState.FINISHED, BaseComponentState.WORKING, BaseComponentState.READY, BaseComponentState.READY, BaseComponentState.FINISHED, BaseComponentState.WORKING, BaseComponentState.WORKING, BaseComponentState.READY, ] ready_time_list, working_time_list = w.get_time_list_for_gannt_chart() assert ready_time_list == [(2, 2), (7, 1)] assert working_time_list == [(1, 1), (5, 2)]
[docs] @pytest.fixture def dummy_component(): return BaseComponent("dummy_component")
[docs] def test_print_mermaid_diagram(dummy_component): """Test the print_mermaid_diagram method.""" dummy_component.print_mermaid_diagram( subgraph=True, )