Example #1
0
def test_ComponentSet_pop():
    component = MockComponentA()
    component_list = OrderedComponentSet(component)

    c = component_list.pop()
    assert c == component

    with pytest.raises(IndexError):
        component_list.pop()
Example #2
0
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
Example #3
0
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
Example #4
0
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))
Example #5
0
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())
Example #6
0
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
Example #7
0
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}
Example #8
0
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()])
Example #9
0
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)
Example #10
0
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]
Example #11
0
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