public void QueryDayTop10() { DateTime now = DateTime.Now; DateTime today = now.Date; List <DensityDevice> devices = DensityDbSimulator.CreateDensityDevice(TestInit.ServiceProvider, 1, 1, 12, "", true); DensityDbSimulator.ResetDatabase(TestInit.ServiceProvider); TestInit.RefreshDensityCache(devices); DensitiesManager manager = TestInit.ServiceProvider.GetRequiredService <DensitiesManager>(); var regions = DensityDbSimulator.CreateData(TestInit.ServiceProvider, devices , new List <DataCreateMode> { DataCreateMode.Fixed, DataCreateMode.Fixed, DataCreateMode.Random } , new List <DateTime> { today.AddDays(-1), now.AddHours(-2).AddMinutes(30), now.AddHours(-1).AddMinutes(30) } , new List <DateTime> { today.AddDays(-1).AddMinutes(1), now.AddHours(-2).AddMinutes(31), now.AddHours(-1).AddMinutes(31) } , true); var densities = regions.OrderByDescending(p => p.Value).ToList(); var dayTop10 = manager.QueryTop10(today); for (int i = 0; i < dayTop10.Count; ++i) { Assert.AreEqual(densities[i].Key.DataId, dayTop10[i].DataId); //今天 Assert.AreEqual(Math.Ceiling((densities[i].Value + 1) / 2.0), dayTop10[i].Value); } DateTime time = DateTime.Now.AddHours(-1); var hourTop10 = manager.QueryTop10(time); for (int i = 0; i < hourTop10.Count; ++i) { Assert.AreEqual(densities[i].Key.DataId, hourTop10[i].DataId); //本小时 Assert.AreEqual(densities[i].Value, hourTop10[i].Value); } var dayChangeTop10 = manager.QueryChangeTop10(today, today.AddDays(-1), today.AddDays(-1).Add(now.TimeOfDay)); for (int i = 0; i < dayChangeTop10.Count; ++i) { Assert.AreEqual(densities[i].Key.DataId, dayChangeTop10[i].DataId); //今天 Assert.AreEqual(Math.Ceiling((densities[i].Value + 1) / 2.0), dayChangeTop10[i].Value); //昨天 Assert.AreEqual(1, dayChangeTop10[i].LastValue); } var hourChangeTop10 = manager.QueryChangeTop10(now.AddHours(-1), now.AddHours(-2), now.AddHours(-1)); for (int i = 0; i < hourChangeTop10.Count; ++i) { Assert.AreEqual(densities[i].Key.DataId, hourChangeTop10[i].DataId); //本小时 Assert.AreEqual(hourTop10[i].Value, hourChangeTop10[i].Value); //上小时 Assert.AreEqual(1, hourChangeTop10[i].LastValue); } }
public List <TrafficDensity> QueryDayTop10() { return(_manager.QueryTop10(DateTime.Today)); }