"""Test ColorMode imports for backward compatibility."""


def test_colormode_import_from_main_module():
    """Test that ColorMode can be imported from the main switchbot module."""
    from switchbot import ColorMode

    # Verify it's the enum we expect
    assert hasattr(ColorMode, "OFF")
    assert hasattr(ColorMode, "COLOR_TEMP")
    assert hasattr(ColorMode, "RGB")
    assert hasattr(ColorMode, "EFFECT")

    # Verify the values
    assert ColorMode.OFF.value == 0
    assert ColorMode.COLOR_TEMP.value == 1
    assert ColorMode.RGB.value == 2
    assert ColorMode.EFFECT.value == 3


def test_colormode_import_from_device_module():
    """Test that ColorMode can be imported from switchbot.devices.device for backward compatibility."""
    from switchbot.devices.device import ColorMode

    # Verify it's the enum we expect
    assert hasattr(ColorMode, "OFF")
    assert hasattr(ColorMode, "COLOR_TEMP")
    assert hasattr(ColorMode, "RGB")
    assert hasattr(ColorMode, "EFFECT")

    # Verify the values
    assert ColorMode.OFF.value == 0
    assert ColorMode.COLOR_TEMP.value == 1
    assert ColorMode.RGB.value == 2
    assert ColorMode.EFFECT.value == 3


def test_colormode_import_from_const():
    """Test that ColorMode can be imported from switchbot.const."""
    from switchbot.const import ColorMode

    # Verify it's the enum we expect
    assert hasattr(ColorMode, "OFF")
    assert hasattr(ColorMode, "COLOR_TEMP")
    assert hasattr(ColorMode, "RGB")
    assert hasattr(ColorMode, "EFFECT")

    # Verify the values
    assert ColorMode.OFF.value == 0
    assert ColorMode.COLOR_TEMP.value == 1
    assert ColorMode.RGB.value == 2
    assert ColorMode.EFFECT.value == 3


def test_colormode_import_from_const_light():
    """Test that ColorMode can be imported from switchbot.const.light."""
    from switchbot.const.light import ColorMode

    # Verify it's the enum we expect
    assert hasattr(ColorMode, "OFF")
    assert hasattr(ColorMode, "COLOR_TEMP")
    assert hasattr(ColorMode, "RGB")
    assert hasattr(ColorMode, "EFFECT")

    # Verify the values
    assert ColorMode.OFF.value == 0
    assert ColorMode.COLOR_TEMP.value == 1
    assert ColorMode.RGB.value == 2
    assert ColorMode.EFFECT.value == 3


def test_all_colormode_imports_are_same_object():
    """Test that all ColorMode imports reference the same enum object."""
    from switchbot import ColorMode as ColorMode1
    from switchbot.const import ColorMode as ColorMode3
    from switchbot.const.light import ColorMode as ColorMode4
    from switchbot.devices.device import ColorMode as ColorMode2

    # They should all be the exact same object
    assert ColorMode1 is ColorMode2
    assert ColorMode2 is ColorMode3
    assert ColorMode3 is ColorMode4

    # And their members should be the same
    assert ColorMode1.OFF is ColorMode2.OFF
    assert ColorMode1.COLOR_TEMP is ColorMode3.COLOR_TEMP
    assert ColorMode1.RGB is ColorMode4.RGB
    assert ColorMode1.EFFECT is ColorMode2.EFFECT
