"""
B-ASIC test suite for OutputPort
TODO: More info
"""
from b_asic import InputPort, OutputPort
import pytest

@pytest.fixture
def inp_ports():
    return [InputPort(_, None) for _ in range(0,3)]

def test_connect_multiple_signals(inp_ports):
    """Can multiple ports connect to an output port?"""
    out_port = OutputPort(0, None)

    for port in inp_ports:
        out_port.connect(port)

    assert out_port.signal_count() == len(inp_ports)

def test_disconnect_multiple_signals(inp_ports):
    """Can multiple signals disconnect from an output port?"""
    out_port = OutputPort(0, None)

    sigs = []

    for port in inp_ports:
        sigs.append(out_port.connect(port))

    for sig in sigs:
        out_port.remove_signal(sig)

    assert out_port.signal_count() == 0

def test_disconnect_mulitple_ports(inp_ports):
    """Can multiple ports be disconnected from an output port?"""
    out_port = OutputPort(0, None)

    for port in inp_ports:
        out_port.connect(port)

    for port in inp_ports:
        out_port.disconnect(port)

    assert out_port.signal_count() == 3
    assert len(out_port.connected_ports) == 0