Newer
Older
"""
B-ASIC test suit for the signal module which consists of the Signal class.
"""
import pytest

Ivar Härnqvist
committed
from b_asic import InputPort, OutputPort, Signal
def test_signal_creation_and_disconnction_and_connection_changing():
in_port = InputPort(None, 0)
out_port = OutputPort(None, 1)
s = Signal(out_port, in_port)
assert in_port.signals == [s]
assert out_port.signals == [s]
assert s.source is out_port
assert s.destination is in_port
s.set_destination(in_port1)
assert in_port.signals == []
assert in_port1.signals == [s]
assert out_port.signals == [s]
assert s.source is out_port
assert s.destination is in_port1
s.remove_source()
assert out_port.signals == []
assert in_port1.signals == [s]
assert s.source is None
assert s.destination is in_port1
s.remove_destination()
assert out_port.signals == []
assert in_port1.signals == []
assert s.source is None
assert s.destination is None
s.set_source(out_port1)
assert out_port1.signals == [s]
assert s.source is out_port1
assert s.destination is None
s.set_source(out_port)
assert out_port.signals == [s]
assert out_port1.signals == []
assert s.source is out_port
assert s.destination is None
s.set_destination(in_port)
assert out_port.signals == [s]
assert in_port.signals == [s]
assert s.source is out_port
assert s.destination is in_port

Ivar Härnqvist
committed
Kevin Scott
committed
class Bits:
def test_pos_int(self, signal):
signal.bits = 10
assert signal.bits == 10
def test_bits_zero(self, signal):
signal.bits = 0
assert signal.bits == 0
def test_bits_neg_int(self, signal):
with pytest.raises(Exception):
signal.bits = -10
def test_bits_complex(self, signal):
with pytest.raises(Exception):
signal.bits = (2+4j)
def test_bits_float(self, signal):
with pytest.raises(Exception):
signal.bits = 3.2
def test_bits_pos_then_none(self, signal):
signal.bits = 10
signal.bits = None
assert signal.bits is None