from radiuma_api.io_port import InPort, OutPort, ImageType, TextType, CompatibilityException
# Codes Go Below:


def test_compatible_ports():
    """Ports with the same DType must connect successfully."""
    outp = OutPort("o", ImageType())
    inp = InPort("i", ImageType())

    outp.connect(inp)

    assert inp.connected_output == outp


def test_incompatible_ports():
    """Connecting mismatched DTypes must raise CompatibilityException."""
    outp = OutPort("o", ImageType())
    inp = InPort("i", TextType())

    try:
        outp.connect(inp)
        assert False, "Expected CompatibilityException"
    except CompatibilityException:
        assert True


def test_outport_single_connection_limit():
    """OutPort must not allow more than one connection."""
    outp = OutPort("o", ImageType())
    inp1 = InPort("i1", ImageType())
    inp2 = InPort("i2", ImageType())

    outp.connect(inp1)

    try:
        outp.connect(inp2)
        assert False, "Expected OutPort max connections error"
    except CompatibilityException:
        assert True
