Exemplo n.º 1
0
async def test_color_setting_color_light(hass):
    """Test ColorSpectrum trait support for light domain."""
    assert helpers.get_google_type(light.DOMAIN, None) is not None
    assert not trait.ColorSettingTrait.supported(light.DOMAIN, 0, None)
    assert trait.ColorSettingTrait.supported(light.DOMAIN,
                                             light.SUPPORT_COLOR, None)

    trt = trait.ColorSettingTrait(hass, State('light.bla', STATE_ON, {
        light.ATTR_HS_COLOR: (20, 94),
        light.ATTR_BRIGHTNESS: 200,
        ATTR_SUPPORTED_FEATURES: light.SUPPORT_COLOR,
    }), BASIC_CONFIG)

    assert trt.sync_attributes() == {
        'colorModel': 'hsv'
    }

    assert trt.query_attributes() == {
        'color': {
            'spectrumHsv': {
                'hue': 20,
                'saturation': 0.94,
                'value': 200 / 255,
            }
        }
    }

    assert trt.can_execute(trait.COMMAND_COLOR_ABSOLUTE, {
        'color': {
            'spectrumRGB': 16715792
        }
    })

    calls = async_mock_service(hass, light.DOMAIN, SERVICE_TURN_ON)
    await trt.execute(trait.COMMAND_COLOR_ABSOLUTE, BASIC_DATA, {
        'color': {
            'spectrumRGB': 1052927
        }
    }, {})
    assert len(calls) == 1
    assert calls[0].data == {
        ATTR_ENTITY_ID: 'light.bla',
        light.ATTR_HS_COLOR: (240, 93.725),
    }

    await trt.execute(trait.COMMAND_COLOR_ABSOLUTE, BASIC_DATA, {
        'color': {
            'spectrumHSV': {
                'hue': 100,
                'saturation': .50,
                'value': .20,
            }
        }
    }, {})
    assert len(calls) == 2
    assert calls[1].data == {
        ATTR_ENTITY_ID: 'light.bla',
        light.ATTR_HS_COLOR: [100, 50],
        light.ATTR_BRIGHTNESS: .2 * 255,
    }
Exemplo n.º 2
0
async def test_color_setting_temperature_light(hass):
    """Test ColorTemperature trait support for light domain."""
    assert helpers.get_google_type(light.DOMAIN, None) is not None
    assert not trait.ColorSettingTrait.supported(light.DOMAIN, 0, None)
    assert trait.ColorSettingTrait.supported(light.DOMAIN,
                                             light.SUPPORT_COLOR_TEMP, None)

    trt = trait.ColorSettingTrait(
        hass,
        State(
            "light.bla",
            STATE_ON,
            {
                light.ATTR_MIN_MIREDS: 200,
                light.ATTR_COLOR_TEMP: 300,
                light.ATTR_MAX_MIREDS: 500,
                ATTR_SUPPORTED_FEATURES: light.SUPPORT_COLOR_TEMP,
            },
        ),
        BASIC_CONFIG,
    )

    assert trt.sync_attributes() == {
        "colorTemperatureRange": {
            "temperatureMinK": 2000,
            "temperatureMaxK": 5000
        }
    }

    assert trt.query_attributes() == {"color": {"temperatureK": 3333}}

    assert trt.can_execute(trait.COMMAND_COLOR_ABSOLUTE,
                           {"color": {
                               "temperature": 400
                           }})
    calls = async_mock_service(hass, light.DOMAIN, SERVICE_TURN_ON)

    with pytest.raises(helpers.SmartHomeError) as err:
        await trt.execute(
            trait.COMMAND_COLOR_ABSOLUTE,
            BASIC_DATA,
            {"color": {
                "temperature": 5555
            }},
            {},
        )
    assert err.value.code == const.ERR_VALUE_OUT_OF_RANGE

    await trt.execute(trait.COMMAND_COLOR_ABSOLUTE, BASIC_DATA,
                      {"color": {
                          "temperature": 2857
                      }}, {})
    assert len(calls) == 1
    assert calls[0].data == {
        ATTR_ENTITY_ID: "light.bla",
        light.ATTR_COLOR_TEMP: color.color_temperature_kelvin_to_mired(2857),
    }
Exemplo n.º 3
0
async def test_color_light_temperature_light_bad_temp(hass):
    """Test ColorTemperature trait support for light domain."""
    assert helpers.get_google_type(light.DOMAIN, None) is not None
    assert not trait.ColorSettingTrait.supported(light.DOMAIN, 0, None)
    assert trait.ColorSettingTrait.supported(light.DOMAIN,
                                             light.SUPPORT_COLOR_TEMP, None)

    trt = trait.ColorSettingTrait(hass, State('light.bla', STATE_ON, {
        light.ATTR_MIN_MIREDS: 200,
        light.ATTR_COLOR_TEMP: 0,
        light.ATTR_MAX_MIREDS: 500,
    }), BASIC_CONFIG)

    assert trt.query_attributes() == {
    }