Example #1
0
        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);
        }
Example #2
0
        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));
        }