Skip to content
Snippets Groups Projects
test_outputport.py 2.02 KiB
Newer Older
  • Learn to ignore specific revisions
  • """
    B-ASIC test suite for OutputPort.
    """
    import pytest
    
    
    from b_asic import OutputPort, InputPort, Signal
    
    
    class TestConnect:
        def test_multiple_ports(self, output_port, list_of_input_ports):
    
            """Multiple connections to an output port should be possible."""
    
            for port in list_of_input_ports:
    
    Ivar Härnqvist's avatar
    Ivar Härnqvist committed
                port.connect(output_port)
    
    Ivar Härnqvist's avatar
    Ivar Härnqvist committed
            assert output_port.signal_count == len(list_of_input_ports)
    
        def test_same_port(self, output_port, input_port):
    
            """Check error handing."""
    
    Ivar Härnqvist's avatar
    Ivar Härnqvist committed
            with pytest.raises(Exception):
    
    Ivar Härnqvist's avatar
    Ivar Härnqvist committed
            assert output_port.signal_count == 1
    
    
    class TestAddSignal:
        def test_dangling(self, output_port):
            s = Signal()
            output_port.add_signal(s)
    
    
    Ivar Härnqvist's avatar
    Ivar Härnqvist committed
            assert output_port.signal_count == 1
            assert output_port.signals == [s]
    
    Ivar Härnqvist's avatar
    Ivar Härnqvist committed
        def test_others_clear(self, output_port, list_of_input_ports):
    
            for port in list_of_input_ports:
    
    Ivar Härnqvist's avatar
    Ivar Härnqvist committed
                port.connect(output_port)
    
    
            for port in list_of_input_ports:
    
    Ivar Härnqvist's avatar
    Ivar Härnqvist committed
                port.clear()
    
            assert output_port.signal_count == 3
            assert all(s.dangling() for s in output_port.signals)
    
    Ivar Härnqvist's avatar
    Ivar Härnqvist committed
        def test_self_clear(self, output_port, list_of_input_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):
    
    Ivar Härnqvist's avatar
    Ivar Härnqvist committed
            s = input_port.connect(output_port)
    
            output_port.remove_signal(s)
    
    
    Ivar Härnqvist's avatar
    Ivar Härnqvist committed
            assert output_port.signal_count == 0
    
            assert output_port.signals == []
    
        def test_multiple_signals(self, output_port, list_of_input_ports):
            sigs = []
    
            for port in list_of_input_ports:
    
    Ivar Härnqvist's avatar
    Ivar Härnqvist committed
                sigs.append(port.connect(output_port))
    
    Ivar Härnqvist's avatar
    Ivar Härnqvist committed
            for s in sigs:
                output_port.remove_signal(s)
    
    Ivar Härnqvist's avatar
    Ivar Härnqvist committed
            assert output_port.signal_count == 0
    
            assert output_port.signals == []