public void TestGetTelemetriesLastManyValues() { //1.1 var db = new DataBaseSqlite(); string deviceCode = RndString(max: 20); string deviceName = RndString(max: 20); string macAddress = RndString(max: 20); string propCode = RndString(max: 20); string propName = RndString(max: 20); List <string> propNames = new List <string> { propName }; string propType = RndPropertyType.ToString(); string isSetter = RndNumber(max: 2).ToString(); string timeMark1 = RndTime.TimeFormater(); string value1 = RndString(3, 3); string timeMark2 = RndTime.TimeFormater(); string value2 = RndString(3, 3); string timeMark3 = RndTime.TimeFormater(); string value3 = RndString(3, 3); var listExpected = new List <(string propName, string timeMarker, string propValue)>(3) { (propName, timeMark1, value1), (propName, timeMark2, value2), (propName, timeMark3, value3) }; //1.2 int err = db.Create(true); Assert.AreEqual(err, 0); err = db.AddDevice(deviceCode, deviceName, macAddress); Assert.AreEqual(err, 0); err = db.AddProperties(deviceCode, propCode, propName, propType, isSetter); Assert.AreEqual(err, 0); err = db.AddTelemetry(deviceCode, propCode, timeMark1, value1); Assert.AreEqual(err, 0); err = db.AddTelemetry(deviceCode, propCode, timeMark2, value2); Assert.AreEqual(err, 0); err = db.AddTelemetry(deviceCode, propCode, timeMark3, value3); Assert.AreEqual(err, 0); //2 err = db.GetTelemetries(out IList <(string propName, string timeMarker, string propValue)> list, deviceCode, propNames); //3 Assert.AreEqual(err, 0); Assert.AreEqual(list.Count, 1); var tMax = listExpected.Max(t => decimal.Parse(t.timeMarker, CultureInfo.InvariantCulture)) .ToString(CultureInfo.InvariantCulture); var m = listExpected.Where(t => t.timeMarker == tMax).ToList(); var d = list[0].timeMarker.TimeFormater(); Assert.AreEqual(decimal.Parse(list[0].timeMarker, CultureInfo.GetCultureInfo("Ru-ru")), decimal.Parse(m[0].timeMarker, CultureInfo.InvariantCulture)); Assert.AreEqual(list[0].propName, m[0].propName); Assert.AreEqual(list[0].propValue, m[0].propValue); }
public void TestCreateTelemetry() { //1 string deviceCode = RndString(max: 20); string propName1 = RndString(max: 20); string timeMark1 = RndTime.TimeFormater(); string propValue1 = RndString(); string propName2 = RndString(max: 20); string timeMark2 = RndTime.TimeFormater(); string propValue2 = RndString(); string propName3 = RndString(max: 20); string timeMark3 = RndTime.TimeFormater(); string propValue3 = RndString(); var data = new List <(string propName, string timeMarker, string propValue)> { (propName1, timeMark1, propValue1), (propName2, timeMark2, propValue2), (propName3, timeMark3, propValue3) }; var pv1 = new PropertiesValues(new Dictionary <string, string> { { propName1, propValue1 } }); Telemetry telemetry1 = new Telemetry(MyCode, pv1, timeMark1.TimeFormater(), deviceCode); var pv2 = new PropertiesValues(new Dictionary <string, string> { { propName2, propValue2 } }); Telemetry telemetry2 = new Telemetry(MyCode, pv2, timeMark2.TimeFormater(), deviceCode); var pv3 = new PropertiesValues(new Dictionary <string, string> { { propName3, propValue3 } }); Telemetry telemetry3 = new Telemetry(MyCode, pv3, timeMark3.TimeFormater(), deviceCode); IList <Telemetry> telemetriesExpected = new List <Telemetry> { telemetry1, telemetry2, telemetry3 }; var kvp = new KeyValuePair <string, IList <(string propName, string timeMarker, string propValue)> >(deviceCode, data); //2 IList <Telemetry> telemetries = CreateTelemetry(kvp); //3 bool Compare(Telemetry a, Telemetry b) { return(a.DeviceCode == b.DeviceCode && a.MessageType == b.MessageType && a.TargetDeviceCode == b.TargetDeviceCode && a.TimeMarker == b.TimeMarker && !a.Values.Except(b.Values).Any()); } var comparer = new EquaComparer <Telemetry>(Compare, obg => obg.DeviceCode.GetHashCode()); Assert.IsEmpty(telemetries.Except(telemetriesExpected, comparer)); }