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; } } } }
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); }
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); }