"""Module for testing topology behaviour.""" import pytest from blc2.topology import Fixture from blc2.workspace import Workspace def test_fixture_create(ws): """Test basic fixture creation.""" f = Fixture(ws, id_=0, name="Test 1") assert f.id in ws.fixtures assert f.id == 0 assert f.name == "Test 1" assert not f.channels with pytest.raises(ValueError): Fixture(ws, id_=0, name="Test 2") assert ws.fixtures[0] == f assert len(ws.fixtures) == 1 f2 = Fixture(ws, name="Test 3") assert f2.id is not None assert ws.fixtures[f2.id] == f2 assert len(ws.fixtures) == 2 f3 = Fixture(ws, channel_count = 3) assert len(f3.channels) == 3 def test_fixture_channels(ws): """Test fixture channel manipulations.""" f = Fixture(ws, channel_count=3) for i in range(3): f.channels[i].address = (0, i) channels = tuple(f.channels) with pytest.raises(ValueError): f.channel_count = -1 assert len(f.channels) == 3 ## Verify that the channels haven't been changed for a, b in zip(f.channels, channels): assert id(a) == id(b) f.channel_count = 2 assert len(f.channels) == 2 for a, b in zip(f.channels, channels[:2]): assert id(a) == id(b) f.channel_count = 3 assert len(f.channels) == 3 for a, b in zip(f.channels, channels[:2]): assert id(a) == id(b) assert id(f.channels[2]) != id(channels[2])