public static void CreateData(TestContext testContext) { _startDate = new DateTime(2019, 1, 1); _days = 1; List <DateTime> dates = new List <DateTime>(); for (DateTime date = _startDate; date <= _startDate.AddDays(_days - 1); date = date.AddDays(1)) { dates.Add(date); } _startDates = new List <DateTime>(); for (int d = 0; d < _days; ++d) { _startDates.Add(_startDate.AddDays(d)); } _months = 1; _startMonths = new List <DateTime>(); for (int m = 0; m < _months; ++m) { _startMonths.Add(TimePointConvert.CurrentTimePoint(DateTimeLevel.Month, _startDate).AddMonths(m)); } _devices = FlowDbSimulator.CreateFlowDevice(TestInit.ServiceProvider, 1, 1, 2, true); TestInit.RefreshFlowCache(_devices); _datas = FlowDbSimulator.CreateData(TestInit.ServiceProvider, _devices, DataCreateMode.Fixed, dates, true); }
public void QueryChannelMinuteStatus() { List <FlowDevice> devices = FlowDbSimulator.CreateFlowDevice(TestInit.ServiceProvider, 1, 1, 2, true); TestInit.RefreshFlowCache(devices); FlowDbSimulator.CreateData(TestInit.ServiceProvider, devices, DataCreateMode.Fixed, DateTime.Today, true); ChannelFlowsManager service = TestInit.ServiceProvider.GetRequiredService <ChannelFlowsManager>(); foreach (FlowDevice device in devices) { foreach (var relation in device.FlowDevice_FlowChannels) { int laneCount = relation.Channel.Lanes.Count; var hourStatus = service.QueryChannelHourStatus(relation.ChannelId); //本小时列表 Assert.AreEqual(30, hourStatus.TodayHourLanes[0].Occupancy); Assert.AreEqual(40, hourStatus.TodayHourLanes[0].TimeOccupancy); for (int i = 1; i < hourStatus.TodayHourLanes.Count; ++i) { Assert.AreEqual(30, hourStatus.TodayHourLanes[i].Occupancy); Assert.AreEqual(40, hourStatus.TodayHourLanes[i].TimeOccupancy); } //本小时图表 for (int i = 0; i < 55; ++i) { Assert.AreEqual(8 * laneCount, hourStatus.TodayHourCharts[0][i].Value); for (int j = 1; j < hourStatus.TodayHourCharts.Count; ++j) { Assert.AreEqual(8, hourStatus.TodayHourCharts[j][i].Value); } } } } }
public void QueryList_TwoMonth() { DateTime startDate1 = new DateTime(2019, 4, 30); DateTime endDate1 = new DateTime(2019, 4, 30); DateTime startDate2 = new DateTime(2019, 5, 1); DateTime endDate2 = new DateTime(2019, 5, 1); int days = Convert.ToInt32((endDate2 - startDate1).TotalDays + 1); List <FlowDevice> devices = FlowDbSimulator.CreateFlowDevice(TestInit.ServiceProvider, 1, 1, 2, true); TestInit.RefreshFlowCache(devices); VideoStructDbSimulator.CreateData(TestInit.ServiceProvider, devices, DataCreateMode.Fixed, startDate1, endDate1, true); VideoStructDbSimulator.CreateData(TestInit.ServiceProvider, devices, DataCreateMode.Fixed, startDate2, endDate2); VideoStructsController controller = new VideoStructsController( TestInit.ServiceProvider.CreateScope().ServiceProvider.GetRequiredService <VideoStructManager_Alone>()); //按路口查询 foreach (FlowDevice device in devices) { foreach (var relation in device.FlowDevice_FlowChannels) { int laneCount = relation.Channel.Lanes.Count; var vehicles = controller.QueryByCrossing(relation.Channel.CrossingId.Value, VideoStructType.机动车, startDate1, endDate2.AddDays(1), 0, 0, true); Assert.AreEqual(days * 24 * 60 * laneCount, vehicles.Datas.Count); var bikes = controller.QueryByCrossing(relation.Channel.CrossingId.Value, VideoStructType.非机动车, startDate1, endDate2.AddDays(1), 0, 0, true); Assert.AreEqual(days * 24 * 60 * laneCount, bikes.Datas.Count); var pedestrains = controller.QueryByCrossing(relation.Channel.CrossingId.Value, VideoStructType.行人, startDate1, endDate2.AddDays(1), 0, 0, true); Assert.AreEqual(days * 24 * 60 * laneCount, pedestrains.Datas.Count); } } //按路口方向查询 foreach (FlowDevice device in devices) { foreach (var relation in device.FlowDevice_FlowChannels) { int[] directions = relation.Channel.Lanes.Select(l => l.Direction).Distinct().ToArray(); foreach (int direction in directions) { int laneCount = relation.Channel.Lanes.Count(l => l.Direction == direction); var vehicles = controller.QueryByCrossing(relation.Channel.CrossingId.Value, new[] { direction }, VideoStructType.机动车, startDate1, endDate2.AddDays(1), 0, 0, true); Assert.AreEqual(days * 24 * 60 * laneCount, vehicles.Datas.Count); var bikes = controller.QueryByCrossing(relation.Channel.CrossingId.Value, new[] { direction }, VideoStructType.非机动车, startDate1, endDate2.AddDays(1), 0, 0, true); Assert.AreEqual(days * 24 * 60 * laneCount, bikes.Datas.Count); var pedestrains = controller.QueryByCrossing(relation.Channel.CrossingId.Value, new[] { direction }, VideoStructType.行人, startDate1, endDate2.AddDays(1), 0, 0, true); Assert.AreEqual(days * 24 * 60 * laneCount, pedestrains.Datas.Count); } } } //按路段查询 foreach (FlowDevice device in devices) { foreach (var relation in device.FlowDevice_FlowChannels) { int laneCount = relation.Channel.Lanes.Count; var vehicles = controller.QueryBySection(relation.Channel.SectionId.Value, VideoStructType.机动车, startDate1, endDate2.AddDays(1), 0, 0, true); Assert.AreEqual(days * 24 * 60 * laneCount, vehicles.Datas.Count); var bikes = controller.QueryBySection(relation.Channel.SectionId.Value, VideoStructType.非机动车, startDate1, endDate2.AddDays(1), 0, 0, true); Assert.AreEqual(days * 24 * 60 * laneCount, bikes.Datas.Count); var pedestrains = controller.QueryBySection(relation.Channel.SectionId.Value, VideoStructType.行人, startDate1, endDate2.AddDays(1), 0, 0, true); Assert.AreEqual(days * 24 * 60 * laneCount, pedestrains.Datas.Count); } } }
public void QueryChannelDayStatus() { DateTime today = DateTime.Today; List <FlowDevice> devices = FlowDbSimulator.CreateFlowDevice(TestInit.ServiceProvider, 1, 1, 2, true); List <DateTime> dates = new List <DateTime> { today.AddYears(-1), today.AddMonths(-1), today.AddDays(-1), today }; TestInit.RefreshFlowCache(devices); FlowDbSimulator.CreateData(TestInit.ServiceProvider, devices, DataCreateMode.Fixed, dates, true); ChannelFlowsManager service = TestInit.ServiceProvider.GetRequiredService <ChannelFlowsManager>(); LaneFlowManager_Alone manager = TestInit.ServiceProvider.GetRequiredService <LaneFlowManager_Alone>(); foreach (FlowDevice device in devices) { foreach (var relation in device.FlowDevice_FlowChannels) { int laneCount = relation.Channel.Lanes.Count; var status = service.QueryChannelDayStatus(relation.ChannelId); //今日列表 Assert.AreEqual(laneCount + 1, status.TodayDayLanes.Count); int sum = 0; for (int i = 0; i < relation.Channel.Lanes.Count; ++i) { var v = manager.QueryList(relation.Channel.Lanes[i].DataId, DateTimeLevel.Minute, DateTime.Today, DateTime.Now); int total = v.Sum(f => f.Total); sum += total; Assert.AreEqual(total, status.TodayDayLanes[i + 1].Total); Assert.AreEqual(30, status.TodayDayLanes[i + 1].Occupancy); Assert.AreEqual(40, status.TodayDayLanes[i + 1].TimeOccupancy); } Assert.AreEqual(sum, status.TodayDayLanes[0].Total); Assert.AreEqual(30, status.TodayDayLanes[0].Occupancy); Assert.AreEqual(40, status.TodayDayLanes[0].TimeOccupancy); //昨天列表 Assert.AreEqual(laneCount + 1, status.YesterdayDayLanes.Count); Assert.AreEqual(11520 * laneCount, status.YesterdayDayLanes[0].Total); for (int i = 1; i < status.YesterdayDayLanes.Count; ++i) { Assert.AreEqual(11520, status.YesterdayDayLanes[i].Total); Assert.AreEqual(30, status.YesterdayDayLanes[i].Occupancy); Assert.AreEqual(40, status.YesterdayDayLanes[i].TimeOccupancy); } //上月列表 Assert.AreEqual(laneCount + 1, status.LastMonthDayLanes.Count); Assert.AreEqual(11520 * laneCount, status.LastMonthDayLanes[0].Total); for (int i = 1; i < status.LastMonthDayLanes.Count; ++i) { Assert.AreEqual(11520, status.LastMonthDayLanes[i].Total); Assert.AreEqual(30, status.LastMonthDayLanes[i].Occupancy); Assert.AreEqual(40, status.LastMonthDayLanes[i].TimeOccupancy); } //去年列表 Assert.AreEqual(laneCount + 1, status.LastYearDayLanes.Count); Assert.AreEqual(11520 * laneCount, status.LastYearDayLanes[0].Total); for (int i = 1; i < status.LastYearDayLanes.Count; ++i) { Assert.AreEqual(11520, status.LastYearDayLanes[i].Total); Assert.AreEqual(30, status.LastYearDayLanes[i].Occupancy); Assert.AreEqual(40, status.LastYearDayLanes[i].TimeOccupancy); } //今日图表 Assert.AreEqual(laneCount + 1, status.TodayDayCharts.Count); Dictionary <int, int> sumValue = new Dictionary <int, int>(); for (int i = 0; i < relation.Channel.Lanes.Count; ++i) { for (int h = 0; h < DateTime.Now.Hour + 1; ++h) { var v = manager.QueryList(relation.Channel.Lanes[i].DataId, DateTimeLevel.Hour, DateTime.Today.AddHours(h), DateTime.Today.AddHours(h)); int value = v.Sum(f => f.Total); //今日每小时图表 Assert.AreEqual(value, status.TodayDayCharts[i + 1][h].Value); if (sumValue.ContainsKey(h)) { sumValue[h] += value; } else { sumValue.Add(h, value); } } } //今日每小时图表总和 for (int h = 0; h < DateTime.Now.Hour + 1; ++h) { Assert.AreEqual(sumValue[h], status.TodayDayCharts[0][h].Value); } //昨天图表 Assert.AreEqual(laneCount + 1, status.YesterdayDayCharts.Count); //昨天总和图表横轴数量 Assert.AreEqual(24, status.YesterdayDayCharts[0].Count); for (int h = 0; h < 24; ++h) { //昨天总和每个横轴的value和remart Assert.AreEqual(480 * laneCount, status.YesterdayDayCharts[0][h].Value); Assert.AreEqual(today.AddDays(-1).AddHours(h).ToString("yyyy-MM-dd HH"), status.YesterdayDayCharts[0][h].Remark); } for (int i = 1; i < status.YesterdayDayCharts.Count; ++i) { //各个车道图表横轴数量 Assert.AreEqual(24, status.YesterdayDayCharts[i].Count); for (int h = 0; h < 24; ++h) { //每个横轴的value和remart Assert.AreEqual(480, status.YesterdayDayCharts[i][h].Value); Assert.AreEqual(today.AddDays(-1).AddHours(h).ToString("yyyy-MM-dd HH"), status.YesterdayDayCharts[i][h].Remark); } } //上月图表 Assert.AreEqual(laneCount + 1, status.LastMonthDayCharts.Count); Assert.AreEqual(24, status.LastMonthDayCharts[0].Count); for (int h = 0; h < 24; ++h) { Assert.AreEqual(480 * laneCount, status.LastMonthDayCharts[0][h].Value); Assert.AreEqual(today.AddMonths(-1).AddHours(h).ToString("yyyy-MM-dd HH"), status.LastMonthDayCharts[0][h].Remark); } for (int i = 1; i < status.LastMonthDayCharts.Count; ++i) { Assert.AreEqual(24, status.LastMonthDayCharts[i].Count); for (int h = 0; h < 24; ++h) { Assert.AreEqual(480, status.LastMonthDayCharts[i][h].Value); Assert.AreEqual(today.AddMonths(-1).AddHours(h).ToString("yyyy-MM-dd HH"), status.LastMonthDayCharts[i][h].Remark); } } //去年图表 Assert.AreEqual(laneCount + 1, status.LastYearDayCharts.Count); Assert.AreEqual(24, status.LastYearDayCharts[0].Count); for (int h = 0; h < 24; ++h) { Assert.AreEqual(480 * laneCount, status.LastYearDayCharts[0][h].Value); Assert.AreEqual(today.AddYears(-1).AddHours(h).ToString("yyyy-MM-dd HH"), status.LastYearDayCharts[0][h].Remark); } for (int i = 1; i < status.LastYearDayCharts.Count; ++i) { Assert.AreEqual(24, status.LastYearDayCharts[i].Count); for (int h = 0; h < 24; ++h) { Assert.AreEqual(480, status.LastYearDayCharts[i][h].Value); Assert.AreEqual(today.AddYears(-1).AddHours(h).ToString("yyyy-MM-dd HH"), status.LastYearDayCharts[i][h].Remark); } } } } }