Ejemplo n.º 1
0
        public void TestGetConsumption()
        {
            List <int> consumption = new List <int>();
            var        packages    = File.ReadAllLines("ESP 20170918 Raw.txt");
            var        lines       = packages.Select(line => line.Trim().Split(' ').Select(v => (byte)int.Parse(v, System.Globalization.NumberStyles.HexNumber)).ToArray()).ToArray();

            foreach (var line in lines)
            {
                if (KaifaHanBeta.GetListID(line, 0, line.Length) == KaifaHanBeta.List1)
                {
                    consumption.Add(KaifaHanBeta.GetInt(0, line, 0, line.Length));
                }
            }
            Assert.AreEqual(1500.0, consumption.Average(), 500.0, "Consumption should be between 1000 and 2000 watts");
        }
Ejemplo n.º 2
0
        public void TestGetPackageID()
        {
            Dictionary <byte, int> packageCount = new Dictionary <byte, int>();
            var packages = File.ReadAllLines("ESP 20170918 Raw.txt");
            var lines    = packages.Select(line => line.Trim().Split(' ').Select(v => (byte)int.Parse(v, System.Globalization.NumberStyles.HexNumber)).ToArray()).ToArray();

            foreach (var line in lines)
            {
                byte list = KaifaHanBeta.GetListID(line, 0, line.Length);
                if (packageCount.ContainsKey(list))
                {
                    packageCount[list]++;
                }
                else
                {
                    packageCount.Add(list, 1);
                }
            }
            var startTime         = new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(KaifaHanBeta.GetPackageTime(lines[0], 0, lines[0].Length));
            var finishTime        = new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(KaifaHanBeta.GetPackageTime(lines[packages.Length - 1], 0, packages[packages.Length - 1].Length));
            var durationInSeconds = finishTime.Subtract(startTime).TotalSeconds;

            Assert.IsTrue(durationInSeconds > 60 * 60 * 4, $"There should be more than 4 hours of recording. Was: {durationInSeconds / 60 * 60 * 4}");

            double list3PerSecond = (1.0 / 3600.0);
            double list2PerSecond = (1.0 / 10.0) - list3PerSecond;
            double list1PerSecond = (1.0 / 2.0) - list2PerSecond;

            Assert.AreEqual(false, packageCount.ContainsKey(KaifaHanBeta.ListUnknown), "There should be no unknown packages");
            Assert.AreEqual(durationInSeconds * list1PerSecond, packageCount[KaifaHanBeta.List1], 1 + 0.01 * packageCount[KaifaHanBeta.List1], "There should be one 'List1' every 2.5s");
            Assert.AreEqual(durationInSeconds * list2PerSecond, packageCount[KaifaHanBeta.List2], 1 + 0.01 * packageCount[KaifaHanBeta.List2], "There should be one 'List2' every 10s");
            Assert.AreEqual(durationInSeconds * list3PerSecond, packageCount[KaifaHanBeta.List3], 1 + 0.01 * packageCount[KaifaHanBeta.List3], "There should be one 'List3' every 1h");

            double targetList1To2Ratio = 4.0;
            double actualList1To2Ratio = (double)packageCount[KaifaHanBeta.List1] / (double)packageCount[KaifaHanBeta.List2];

            Assert.AreEqual(targetList1To2Ratio, actualList1To2Ratio, 0.01, "There should be a ratio of List1:List2 of 4");
        }