Exemple #1
0
        public void QueryTest()
        {
            var query = new RestRequest(Method.GET);

            query.Resource      = "api/device";
            query.RequestFormat = DataFormat.Json;
            var resp = _client.Execute(query);

            Assert.AreEqual(HttpStatusCode.OK, resp.StatusCode);
            const String ExpectedResponse = "[{\"Enabled\":false,\"Value\":0.0,\"ID\":0,\"LastUpdate\":\"2015-04-21T13:28:10.5439104\",\"Name\":\"light1\",\"Class\":\"LightSwitch\"},{\"Enabled\":false,\"State\":0,\"ID\":1,\"LastUpdate\":\"2015-04-21T13:28:10.5442048\",\"Name\":\"Kitchen Ceiling Fan\",\"Class\":\"CeilingFan\"},{\"Enabled\":false,\"SetPoint\":0.0,\"Value\":0.0,\"ID\":2,\"LastUpdate\":\"2015-04-21T13:28:10.5442048\",\"Name\":\"HVAC\",\"Class\":\"Thermostat\"}]";

            Assert.IsTrue(resp.Content.Length > 0);
            var resp_obj = JArray.Parse(resp.Content);
            var test_obj = JArray.Parse(ExpectedResponse);

            Assert.AreEqual(resp_obj.Count, test_obj.Count);

            foreach (var obj in resp_obj)
            {
                var resp_dev = Interfaces.DeserializeDevice(obj.ToString(), null, null, _frame);
                foreach (var exp_obj in test_obj)
                {
                    var exp_dev = Interfaces.DeserializeDevice(exp_obj.ToString(), null, null, _frame);
                    if (resp_dev.ID.DeviceID == exp_dev.ID.DeviceID)
                    {
                        Assert.AreEqual(resp_dev.ID.DeviceID, exp_dev.ID.DeviceID);
                        Assert.IsTrue(resp_dev.UpdateOk);
                        Assert.AreEqual(exp_dev.Name, resp_dev.Name);
                        Assert.AreEqual(exp_dev.Class, resp_dev.Class);
                        break;
                    }
                }
            }
        }
Exemple #2
0
        public void TestDeviceDeserialization()
        {
            string invalid_string = "";

            var invalid_object = Interfaces.DeserializeDevice(invalid_string, null, null, null);

            Assert.AreEqual(invalid_object, null);

            string valid_string = "{class: \"LightSwitch\", enabled: true, Brightness: 1.0}";
            var    valid_switch = Interfaces.DeserializeDevice(valid_string, null, null, null);

            Assert.IsInstanceOf <LightSwitch>(valid_switch);
            var ls = valid_switch as LightSwitch;

            Assert.IsTrue(ls.Enabled);
            Assert.AreEqual(ls.Value.Brightness, 1.0);
        }
Exemple #3
0
        static bool GenerateSimulatedHouse(string house_id, string scenario)
        {
            if (String.IsNullOrEmpty(house_id) || String.IsNullOrEmpty(scenario))
            {
                return(false);
            }

            JObject info = null;

            try
            {
                info = JObject.Parse(scenario);
            }
            catch (JsonException ex)
            {
                var error = String.Format("Scenario parsing error: {0}", ex.Message);
                Console.WriteLine(error);
                return(false);
            }
            JToken house_list;

            if (!info.TryGetValue("houses", out house_list))
            {
                return(false);
            }

            bool status = false;
            IJEnumerable <JToken> houses = house_list.Children();

            //search through houses. Pity this isn't a map.
            foreach (JToken house in houses)
            {
                JObject house_obj = JObject.Parse(house.ToString());
                JToken  id_tok;

                //found our house
                if (house_obj.TryGetValue("id", out id_tok) &&
                    id_tok.ToString() == house_id)
                {
                    JToken port_tok;
                    JToken dev_tok;
                    if (house_obj.TryGetValue("port", out port_tok))
                    {
                        _port = JsonConvert.DeserializeObject <int>(port_tok.ToString());
                        //must get a valid port value
                        if (_port > System.Net.IPEndPoint.MaxPort || _port < System.Net.IPEndPoint.MinPort)
                        {
                            return(false);
                        }
                    }
                    bool success = house_obj.TryGetValue("devices", out dev_tok);
                    System.Diagnostics.Debug.Assert(success);
                    IJEnumerable <JToken> devices = dev_tok.Children();
                    UInt64 id = 0;
                    foreach (JToken dev in devices)
                    {
                        //TODO: Create DeviceInput and DeviceOutput for control
                        Device device = Interfaces.DeserializeDevice(dev.ToString(), null, null, new TimeFrame());

                        if (device != null)
                        {
                            device.ID.DeviceID = id++;
                            DeviceModel.Instance.Devices.Add(device);
                        }
                    }

                    JToken weather_tok;
                    success = house_obj.TryGetValue("weather", out weather_tok);
                    System.Diagnostics.Debug.Assert(success);
                    _weather = new LinearWeather();
                    IJEnumerable <JToken> temps = weather_tok.Children();
                    foreach (JToken temp in temps)
                    {
                        _weather.Add(JsonConvert.DeserializeObject <TemperatureSetPoint>(temp.ToString()));
                    }

                    System.Diagnostics.Debug.Assert(DeviceModel.Instance.Devices.Count > 0);
                    status = true;
                    break;
                }
            }

            return(status);
        }