Newer
Older
"""
B-ASIC test suite for Inputport
"""
import pytest

Ivar Härnqvist
committed
from b_asic import InputPort, OutputPort, Signal
Kevin Scott
committed
def output_port2():
@pytest.fixture
def dangling_sig():
return Signal()
@pytest.fixture
Kevin Scott
committed
def s_w_source(output_port):
return Signal(source=output_port)
def sig_with_dest(inp_port):
return Signal(destination=inp_port)
Kevin Scott
committed
def connected_sig(inp_port, output_port):
return Signal(source=output_port, destination=inp_port)
Kevin Scott
committed
def test_connect_then_disconnect(input_port, output_port):
Kevin Scott
committed
s1 = input_port.connect(output_port)
Kevin Scott
committed
assert input_port.connected_source == output_port
assert input_port.signals == [s1]
assert output_port.signals == [s1]
assert s1.source is output_port
assert s1.destination is input_port
Kevin Scott
committed
input_port.remove_signal(s1)
Kevin Scott
committed
assert input_port.connected_source is None
assert input_port.signals == []
assert output_port.signals == [s1]
assert s1.source is output_port
Kevin Scott
committed
def test_connect_used_port_to_new_port(input_port, output_port, output_port2):
"""Multiple connections to an input port should throw an error."""
input_port.connect(output_port)
Kevin Scott
committed
input_port.connect(output_port2)
Kevin Scott
committed
def test_add_signal_then_disconnect(input_port, s_w_source):
"""Can signal be connected then disconnected properly?"""
Kevin Scott
committed
input_port.add_signal(s_w_source)
Kevin Scott
committed
assert input_port.connected_source == s_w_source.source
assert input_port.signals == [s_w_source]
assert s_w_source.source.signals == [s_w_source]
Kevin Scott
committed
assert s_w_source.destination is input_port
Kevin Scott
committed
input_port.remove_signal(s_w_source)
Kevin Scott
committed
assert input_port.connected_source is None
assert input_port.signals == []
assert s_w_source.source.signals == [s_w_source]
assert s_w_source.destination is None