public void GetHourlyStats_SeveralSensorModulesOneDay_CorrectValues() { // Arrange var statisticsRepository = new Mock <IStatisticsRepository>(); statisticsRepository .Setup(x => x.GetStatsByParameter(It.IsAny <string>(), It.IsAny <DateTime>(), It.IsAny <DateTime>())) .Returns(new List <StatisticsDbEntry> { NewSensorStatisticsDbEntry(Today.AddHours(1).AddMinutes(0), Today.AddHours(1).AddMinutes(5), 27), NewSensorStatisticsDbEntry(Today.AddHours(1).AddMinutes(5), Today.AddHours(1).AddMinutes(10), 28.54), NewSensorStatisticsDbEntryM2(Today.AddHours(1).AddMinutes(0), Today.AddHours(1).AddMinutes(5), 12.5), NewSensorStatisticsDbEntryM2(Today.AddHours(1).AddMinutes(5), Today.AddHours(1).AddMinutes(10), 11.3), NewSensorStatisticsDbEntry(Today.AddHours(2).AddMinutes(0), Today.AddHours(2).AddMinutes(5), 29), NewSensorStatisticsDbEntry(Today.AddHours(2).AddMinutes(5), Today.AddHours(2).AddMinutes(10), 25), NewSensorStatisticsDbEntryM2(Today.AddHours(2).AddMinutes(0), Today.AddHours(2).AddMinutes(5), 12), NewSensorStatisticsDbEntryM2(Today.AddHours(2).AddMinutes(5), Today.AddHours(2).AddMinutes(10), 14) }); // Act var service = new StatisticsCoreService(null, statisticsRepository.Object, _dateTime.Object); var result = service.GetHourlyStats(null, null, SensorParameter, Today, Today.AddDays(1)); // Assert Assert.That(result.Length, Is.EqualTo(3)); var minValues = result[0]; Assert.That(minValues[0].Timestamp, Is.EqualTo(TodayMs)); Assert.That(minValues[0].Value, Is.EqualTo(0)); Assert.That(minValues[1].Timestamp, Is.EqualTo(TodayMs + 1 * 3600 * 1000)); Assert.That(minValues[1].Value, Is.EqualTo(11.3)); Assert.That(minValues[2].Timestamp, Is.EqualTo(TodayMs + 2 * 3600 * 1000)); Assert.That(minValues[2].Value, Is.EqualTo(12)); var maxValues = result[1]; Assert.That(maxValues[0].Timestamp, Is.EqualTo(TodayMs)); Assert.That(maxValues[0].Value, Is.EqualTo(0)); Assert.That(maxValues[1].Timestamp, Is.EqualTo(TodayMs + 1 * 3600 * 1000)); Assert.That(maxValues[1].Value, Is.EqualTo(28.54)); Assert.That(maxValues[2].Timestamp, Is.EqualTo(TodayMs + 2 * 3600 * 1000)); Assert.That(maxValues[2].Value, Is.EqualTo(29)); var avgValues = result[2]; Assert.That(avgValues[0].Timestamp, Is.EqualTo(TodayMs)); Assert.That(avgValues[0].Value, Is.EqualTo(0)); Assert.That(avgValues[1].Timestamp, Is.EqualTo(TodayMs + 1 * 3600 * 1000)); Assert.That(avgValues[1].Value, Is.EqualTo(19.835).Within(0.0001)); Assert.That(avgValues[2].Timestamp, Is.EqualTo(TodayMs + 2 * 3600 * 1000)); Assert.That(avgValues[2].Value, Is.EqualTo(20).Within(0.0001)); }
public void GetHourlyStats_SpecificSensorModuleTwoDays_CorrectValues() { // Arrange var statisticsRepository = new Mock <IStatisticsRepository>(); statisticsRepository .Setup(x => x.GetStatsByParameterAndDevice(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <DateTime>(), It.IsAny <DateTime>())) .Returns(new List <StatisticsDbEntry> { NewSensorStatisticsDbEntry(Today.AddHours(1).AddMinutes(0), Today.AddHours(1).AddMinutes(5), 27), NewSensorStatisticsDbEntry(Today.AddDays(1).AddHours(1).AddMinutes(5), Today.AddDays(1).AddHours(1).AddMinutes(10), 25), NewSensorStatisticsDbEntry(Today.AddHours(2).AddMinutes(0), Today.AddHours(2).AddMinutes(5), 29), NewSensorStatisticsDbEntry(Today.AddDays(1).AddHours(2).AddMinutes(5), Today.AddDays(1).AddHours(2).AddMinutes(10), 25), }); // Act var service = new StatisticsCoreService(null, statisticsRepository.Object, _dateTime.Object); var result = service.GetHourlyStats(Domain, Address, SensorParameter, Today, Today.AddDays(1)); // Assert Assert.That(result.Length, Is.EqualTo(3)); var minValues = result[0]; Assert.That(minValues[0].Timestamp, Is.EqualTo(TodayMs)); Assert.That(minValues[0].Value, Is.EqualTo(0)); Assert.That(minValues[1].Timestamp, Is.EqualTo(TodayMs + 1 * 3600 * 1000)); Assert.That(minValues[1].Value, Is.EqualTo(25)); Assert.That(minValues[2].Timestamp, Is.EqualTo(TodayMs + 2 * 3600 * 1000)); Assert.That(minValues[2].Value, Is.EqualTo(25)); var maxValues = result[1]; Assert.That(maxValues[0].Timestamp, Is.EqualTo(TodayMs)); Assert.That(maxValues[0].Value, Is.EqualTo(0)); Assert.That(maxValues[1].Timestamp, Is.EqualTo(TodayMs + 1 * 3600 * 1000)); Assert.That(maxValues[1].Value, Is.EqualTo(27)); Assert.That(maxValues[2].Timestamp, Is.EqualTo(TodayMs + 2 * 3600 * 1000)); Assert.That(maxValues[2].Value, Is.EqualTo(29)); var avgValues = result[2]; Assert.That(avgValues[0].Timestamp, Is.EqualTo(TodayMs)); Assert.That(avgValues[0].Value, Is.EqualTo(0)); Assert.That(avgValues[1].Timestamp, Is.EqualTo(TodayMs + 1 * 3600 * 1000)); Assert.That(avgValues[1].Value, Is.EqualTo(26).Within(0.0001)); Assert.That(avgValues[2].Timestamp, Is.EqualTo(TodayMs + 2 * 3600 * 1000)); Assert.That(avgValues[2].Value, Is.EqualTo(27).Within(0.0001)); }
public void GetHourlyStats_SeveralMeterModulesTwoDays_CorrectValues() { // Arrange var statisticsRepository = new Mock <IStatisticsRepository>(); statisticsRepository .Setup(x => x.GetStatsByParameter(It.IsAny <string>(), It.IsAny <DateTime>(), It.IsAny <DateTime>())) .Returns(new List <StatisticsDbEntry> { NewMeterStatisticsDbEntry(Today.AddHours(1).AddMinutes(0), Today.AddHours(1).AddMinutes(5), 50), NewMeterStatisticsDbEntry(Today.AddHours(1).AddMinutes(5), Today.AddHours(1).AddMinutes(10), 30), NewMeterStatisticsDbEntryM2(Today.AddHours(1).AddMinutes(0), Today.AddHours(1).AddMinutes(5), 10), NewMeterStatisticsDbEntryM2(Today.AddHours(1).AddMinutes(5), Today.AddHours(1).AddMinutes(10), 10), NewMeterStatisticsDbEntry(Today.AddDays(1).AddHours(1).AddMinutes(0), Today.AddDays(1).AddHours(1).AddMinutes(5), 50), NewMeterStatisticsDbEntry(Today.AddDays(1).AddHours(1).AddMinutes(5), Today.AddDays(1).AddHours(1).AddMinutes(10), 40), NewMeterStatisticsDbEntryM2(Today.AddDays(1).AddHours(1).AddMinutes(0), Today.AddDays(1).AddHours(1).AddMinutes(5), 10), NewMeterStatisticsDbEntryM2(Today.AddDays(1).AddHours(1).AddMinutes(5), Today.AddDays(1).AddHours(1).AddMinutes(10), 30) }); // Act var service = new StatisticsCoreService(null, statisticsRepository.Object, _dateTime.Object); var result = service.GetHourlyStats(null, null, MeterParameter, Today.AddDays(-1), Today.AddDays(1)); // Assert Assert.That(result.Length, Is.EqualTo(3)); var minValues = result[0]; Assert.That(minValues[0].Timestamp, Is.EqualTo(TodayMs)); Assert.That(minValues[0].Value, Is.EqualTo(0)); Assert.That(minValues[1].Timestamp, Is.EqualTo(TodayMs + 1 * 3600 * 1000)); Assert.That(minValues[1].Value, Is.EqualTo(20)); var maxValues = result[1]; Assert.That(maxValues[0].Timestamp, Is.EqualTo(TodayMs)); Assert.That(maxValues[0].Value, Is.EqualTo(0)); Assert.That(maxValues[1].Timestamp, Is.EqualTo(TodayMs + 1 * 3600 * 1000)); Assert.That(maxValues[1].Value, Is.EqualTo(90)); var avgValues = result[2]; Assert.That(avgValues[0].Timestamp, Is.EqualTo(TodayMs)); Assert.That(avgValues[0].Value, Is.EqualTo(0)); Assert.That(avgValues[1].Timestamp, Is.EqualTo(TodayMs + 1 * 3600 * 1000)); Assert.That(avgValues[1].Value, Is.EqualTo(57.5)); }