def test_ComponentSet_eq(): component_1 = MockComponentA() component_2 = MockComponentB() component_list = OrderedComponentSet(component_1, component_2) assert component_list == component_list assert component_list != 10 second_list = OrderedComponentSet(component_1) assert component_list != second_list
def test_ComponentSet_bool_len(): component_list = OrderedComponentSet() assert not bool(component_list) assert len(component_list) == 0 component_1 = MockComponentA() component_2 = MockComponentB() component_list = OrderedComponentSet(component_1, component_2) assert bool(component_list) assert len(component_list) == 2
def test_ComponentManager_add_components(components): config = build_simulation_configuration() cm = ComponentManager() cm.configuration = config cm.add_managers(components) assert cm._managers == OrderedComponentSet(*ComponentManager._flatten(components)) config = build_simulation_configuration() cm = ComponentManager() cm.configuration = config cm.add_components(components) assert cm._components == OrderedComponentSet(*ComponentManager._flatten(components))
def test_ComponentSet_contains(): component_list = OrderedComponentSet() assert not bool(component_list) assert len(component_list) == 0 component_1 = MockComponentA() component_2 = MockComponentB() component_3 = MockComponentA(name='absent') component_list = OrderedComponentSet(component_1, component_2) assert component_1 in component_list assert component_3 not in component_list with pytest.raises(ComponentConfigError, match='no name'): throwaway = 10 in component_list
def test_add_components(): config = build_simulation_configuration() cm = ComponentManager() cm.configuration = config assert not cm._managers managers = [MockGenericComponent(f'manager_{i}') for i in range(5)] components = [MockGenericComponent(f'component_{i}') for i in range(5)] cm.add_managers(managers) cm.add_components(components) assert cm._managers == OrderedComponentSet(*managers) assert cm._components == OrderedComponentSet(*components) for c in managers + components: assert config[c.name].to_dict() == c.configuration_defaults[c.name] assert cm.list_components() == {c.name: c for c in components}
def test_ComponentSet_pop(): component = MockComponentA() component_list = OrderedComponentSet(component) c = component_list.pop() assert c == component with pytest.raises(IndexError): component_list.pop()
def test_ComponentSet_update(): component_list = OrderedComponentSet() components = [MockComponentA(name='component_0'), MockComponentA('component_1')] component_list.update(components) with pytest.raises(ComponentConfigError, match='duplicate name'): component_list.update(components) with pytest.raises(ComponentConfigError, match='no name'): component_list.update([NamelessComponent()])
def test_setup_components(mocker): builder = mocker.Mock() mock_a = MockComponentA('test_a') mock_b = MockComponentB('test_b') components = OrderedComponentSet(mock_a, mock_b) ComponentManager._setup_components(builder, components) assert mock_a.builder_used_for_setup is None # class has no setup method assert mock_b.builder_used_for_setup is builder builder.value.register_value_modifier.assert_called_once_with('metrics', mock_b.metrics)
def test_ComponentSet_add(): component_list = OrderedComponentSet() component_0 = MockComponentA(name='component_0') component_list.add(component_0) component_1 = MockComponentA(name='component_1') component_list.add(component_1) # duplicates by name with pytest.raises(ComponentConfigError, match='duplicate name'): component_list.add(component_0) # no name with pytest.raises(ComponentConfigError, match='no name'): component_list.add(NamelessComponent())
def test_ComponentSet_initialization(): component_1 = MockComponentA() component_2 = MockComponentB() component_list = OrderedComponentSet(component_1, component_2) assert component_list.components == [component_1, component_2]
def test_ComponentSet_dunder_add(): l1 = OrderedComponentSet(*[MockComponentA(name=str(i))for i in range(5)]) l2 = OrderedComponentSet(*[MockComponentA(name=str(i)) for i in range(5, 10)]) combined = OrderedComponentSet(*[MockComponentA(name=str(i)) for i in range(10)]) assert l1 + l2 == combined