예제 #1
0
    def test_requestBuilding(self):
        tahoma = Protocol("", "", unittest=1 )
        tahoma._getSetup(SetupInput) # only for unit tests

        light = tahoma.getDevice("hue://1234-1234-1234/123456789012/lights/1")
        window = tahoma.getDevice("io://1234-1234-1234/12345644")

        request = tahoma._createGetStateRequest( [ light, window ] )

        shouldBe = '''[{"deviceURL": "hue://1234-1234-1234/123456789012/lights/1","states": [{"name": "core:CieColorSpaceXState"},{"name": "core:CieColorSpaceYState"},{"name": "core:ColorHueState"},{"name": "core:ColorSaturationState"},{"name": "core:LightIntensityState"},{"name": "core:NameState"},{"name": "core:OnOffState"},{"name": "hue:HueColorModeState"}]},{"deviceURL": "io://1234-1234-1234/12345644","states": [{"name": "core:ClosureState"},{"name": "core:NameState"},{"name": "core:OpenClosedState"},{"name": "core:PriorityLockTimerState"}]}]'''

        self.assertEqual(request, shouldBe)
    def test_parse(self):
        tahoma = Protocol("", "", unittest=1 )
        tahoma._getSetup(SetupInput) # only for unit tests

        self.assertEqual(tahoma.location["postalCode"], "90210")
        self.assertTrue(tahoma.gateway[0]["alive"])
        self.assertEqual(tahoma.gateway[0]["connectivity"]["protocolVersion"], "8")
        self.assertEqual(len(tahoma.getDevices()), 6)
        device = tahoma.getDevice("hue://1234-1234-1234/123456789012/lights/1")
        self.assertEqual(device.activeStates["core:CieColorSpaceYState"], 0.2792)
    def test_parse(self):
        tahoma = Protocol("", "", unittest=1)
        tahoma._getSetup(SetupInput)  # only for unit tests

        self.assertEqual(tahoma.location["postalCode"], "90210")
        self.assertTrue(tahoma.gateway[0]["alive"])
        self.assertEqual(tahoma.gateway[0]["connectivity"]["protocolVersion"],
                         "8")
        self.assertEqual(len(tahoma.getDevices()), 6)
        device = tahoma.getDevice("hue://1234-1234-1234/123456789012/lights/1")
        self.assertEqual(device.activeStates["core:CieColorSpaceYState"],
                         0.2792)
예제 #4
0
    def test_multiEventsWithImplicitUpdate(self):

        eventData = [{
            "name": "ExecutionStateChangedEvent",
            "setupOID": "123456-1234-1234-1234-1234567890",
            "execId": "12345678-1234-1234-1234-123456782012",
            "newState": "4",
            "ownerKey": "1234-1234-1234",
            "type": "5",
            "subType": "-1",
            "oldState": "2"
        }, {
            "name":
            "DeviceStateChangedEvent",
            "setupOID":
            "123456-1234-1234-1234-1234567890",
            "deviceURL":
            "io://1234-1234-1234/12345644",
            "deviceStates": [{
                "name": "core:ClosureState",
                "value": "12"
            }, {
                "name": "core:OpenClosedState",
                "value": "open"
            }]
        }]

        tahoma = Protocol("", "", unittest=1)
        tahoma._getSetup(SetupInput)  # only for unit tests

        device = tahoma.getDevice("io://1234-1234-1234/12345644")
        self.assertEqual(device.activeStates["core:ClosureState"], 100)
        self.assertEqual(device.activeStates["core:OpenClosedState"], "closed")

        events = tahoma._getEvents(eventData)
        self.assertEqual(len(events), 2)
        self.assertTrue(isinstance(events[0], ExecutionStateChangedEvent))
        self.assertEqual(events[0].execId,
                         "12345678-1234-1234-1234-123456782012")
        self.assertEqual(events[0].state, EventState.Completed)

        self.assertTrue(isinstance(events[1], DeviceStateChangedEvent))
        self.assertEqual(events[1].deviceURL, "io://1234-1234-1234/12345644")

        self.assertEqual(device.activeStates["core:ClosureState"], 12)
        self.assertEqual(device.activeStates["core:OpenClosedState"], "open")
    def test_multiEventsWithImplicitUpdate(self):

        eventData = [{
            "name": "ExecutionStateChangedEvent",
            "setupOID": "123456-1234-1234-1234-1234567890",
            "execId": "12345678-1234-1234-1234-123456782012",
            "newState": "4",
            "ownerKey": "1234-1234-1234",
            "type": "5",
            "subType": "-1",
            "oldState": "2"
        }, {
            "name": "DeviceStateChangedEvent",
            "setupOID": "123456-1234-1234-1234-1234567890",
            "deviceURL": "io://1234-1234-1234/12345644",
            "deviceStates": [{
                "name": "core:ClosureState",
                "value": "12"
            }, {
                "name": "core:OpenClosedState",
                "value": "open"
            }]
        }]

        tahoma = Protocol("", "", unittest=1 )
        tahoma._getSetup(SetupInput) # only for unit tests

        device = tahoma.getDevice("io://1234-1234-1234/12345644")
        self.assertEqual(device.activeStates["core:ClosureState"], 100)
        self.assertEqual(device.activeStates["core:OpenClosedState"], "closed")

        events = tahoma._getEvents(eventData)
        self.assertEqual(len(events), 2)
        self.assertTrue(isinstance(events[0], ExecutionStateChangedEvent))
        self.assertEqual(events[0].execId, "12345678-1234-1234-1234-123456782012")
        self.assertEqual(events[0].state, EventState.Completed)

        self.assertTrue(isinstance(events[1], DeviceStateChangedEvent))
        self.assertEqual(events[1].deviceURL, "io://1234-1234-1234/12345644")

        self.assertEqual(device.activeStates["core:ClosureState"], 12)
        self.assertEqual(device.activeStates["core:OpenClosedState"], "open")
예제 #6
0
    def test_applyChanges(self):
        tahoma = Protocol("", "", unittest=1 )
        tahoma._getSetup(SetupInput) # only for unit tests

        changeData = {
	"devices": [{
		"label": "Light name",
		"deviceURL": "hue://1234-1234-1234/123456789012/lights/1",
		"shortcut": False,
		"states": [{
			"name": "core:ColorHueState",
			"type": 1,
			"value": 265
		}, {
			"name": "core:ColorSaturationState",
			"type": 1,
			"value": 44
		}, {
			"name": "core:CieColorSpaceXState",
			"type": 2,
			"value": 0.432
		}, {
			"name": "core:CieColorSpaceYState",
			"type": 2,
			"value": 0.2792
		}, {
			"name": "hue:HueColorModeState",
			"type": 3,
			"value": "hs"
		}, {
			"name": "core:NameState",
			"type": 3,
			"value": "Light name"
		}, {
			"name": "core:OnOffState",
			"type": 3,
			"value": "on"
		}, {
			"name": "core:LightIntensityState",
			"type": 1,
			"value": 20
		}],
		"available": False,
		"enabled": False,
		"type": 1
	}, {
		"label": "window2",
		"deviceURL": "io://1234-1234-1234/12345644",
		"shortcut": False,
		"states": [{
			"name": "core:NameState",
			"type": 3,
			"value": "window2"
		}, {
			"name": "core:PriorityLockTimerState",
			"type": 1,
			"value": 0
		}, {
			"name": "core:ClosureState",
			"type": 1,
			"value": 22
		}, {
			"name": "core:OpenClosedState",
			"type": 3,
			"value": "open"
		}],
		"available": False,
		"enabled": False,
		"type": 1
	}]
}

        light = tahoma.getDevice("hue://1234-1234-1234/123456789012/lights/1")
        window = tahoma.getDevice("io://1234-1234-1234/12345644")

        self.assertEqual( light.activeStates["core:CieColorSpaceXState"], 0.3505 )
        self.assertEqual( light.activeStates["core:LightIntensityState"], 0 )
        self.assertEqual( light.activeStates["core:OnOffState"], "off" )

        self.assertEqual( window.activeStates["core:ClosureState"], 100 )
        self.assertEqual( window.activeStates["core:OpenClosedState"], "closed" )

        tahoma._getStates(changeData) # only for unit tests

        self.assertEqual( light.activeStates["core:CieColorSpaceXState"], 0.432 )
        self.assertEqual( light.activeStates["core:LightIntensityState"], 20 )
        self.assertEqual( light.activeStates["core:OnOffState"], "on" )

        self.assertEqual( window.activeStates["core:ClosureState"], 22 )
        self.assertEqual( window.activeStates["core:OpenClosedState"], "open" )