-
Refactor constructor so that Input signals and Output signals are connected to ports before traversal is started, that way edge cases of empty SFG's are easily handled
Refactor constructor so that Input signals and Output signals are connected to ports before traversal is started, that way edge cases of empty SFG's are easily handled
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
test_outputport.py 2.45 KiB
"""
B-ASIC test suite for OutputPort.
"""
import pytest
from b_asic import OutputPort, InputPort, Signal
@pytest.fixture
def output_port():
return OutputPort(None, 0)
@pytest.fixture
def input_port():
return InputPort(None, 0)
@pytest.fixture
def list_of_input_ports():
return [InputPort(None, i) for i in range(0, 3)]
class TestConnect:
def test_multiple_ports(self, output_port, list_of_input_ports):
"""Can multiple ports connect to an output port?"""
for port in list_of_input_ports:
port.connect(output_port)
assert output_port.signal_count == len(list_of_input_ports)
def test_same_port(self, output_port, list_of_input_ports):
"""Check error handing."""
list_of_input_ports[0].connect(output_port)
with pytest.raises(Exception):
list_of_input_ports[0].connect(output_port)
assert output_port.signal_count == 1
class TestAddSignal:
def test_dangling(self, output_port):
s = Signal()
output_port.add_signal(s)
assert output_port.signal_count == 1
assert output_port.signals == [s]
class TestDisconnect:
def test_others_clear(self, output_port, list_of_input_ports):
"""Can multiple ports disconnect from OutputPort?"""
for port in list_of_input_ports:
port.connect(output_port)
for port in list_of_input_ports:
port.clear()
assert output_port.signal_count == 3
assert all(s.dangling() for s in output_port.signals)
def test_self_clear(self, output_port, list_of_input_ports):
"""Can an OutputPort disconnect from multiple ports?"""
for port in list_of_input_ports:
port.connect(output_port)
output_port.clear()
assert output_port.signal_count == 0
assert output_port.signals == []
class TestRemoveSignal:
def test_one_signal(self, output_port, input_port):
s = input_port.connect(output_port)
output_port.remove_signal(s)
assert output_port.signal_count == 0
assert output_port.signals == []
def test_multiple_signals(self, output_port, list_of_input_ports):
"""Can multiple signals disconnect from OutputPort?"""
sigs = []
for port in list_of_input_ports:
sigs.append(port.connect(output_port))
for s in sigs:
output_port.remove_signal(s)
assert output_port.signal_count == 0
assert output_port.signals == []