Skip to content
Snippets Groups Projects
test_signal.py 2.14 KiB
Newer Older
  • Learn to ignore specific revisions
  • """
    B-ASIC test suit for the signal module which consists of the Signal class.
    """
    
    import pytest
    
    
    from b_asic import InputPort, OutputPort, Signal
    
    
    
    def test_signal_creation_and_disconnction_and_connection_changing():
    
    Ivar Härnqvist's avatar
    Ivar Härnqvist committed
        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
    
    
    Ivar Härnqvist's avatar
    Ivar Härnqvist committed
        in_port1 = InputPort(None, 0)
    
        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
    
    
    Ivar Härnqvist's avatar
    Ivar Härnqvist committed
        out_port1 = OutputPort(None, 0)
    
        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
    
    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