public void Us60ShouldCorrectlyIdentifySplitSleeper() { var logs = new List <DutyStatusEvent> { new DutyStatusEvent("1", DateTime.Parse("10/1/2018 00:00:00"), DateTime.Parse("10/1/2018 08:00:00"), Enums.DutyStatus.Driving, Enums.Jurisdiction.Us60), //drive 8 new DutyStatusEvent("1", DateTime.Parse("10/1/2018 08:00:00"), DateTime.Parse("10/1/2018 16:00:00"), Enums.DutyStatus.Sleeper, Enums.Jurisdiction.Us60), //sleeper 8 new DutyStatusEvent("1", DateTime.Parse("10/1/2018 16:00:00"), DateTime.Parse("10/1/2018 19:00:00"), Enums.DutyStatus.Driving, Enums.Jurisdiction.Us60), //drive 3 new DutyStatusEvent("1", DateTime.Parse("10/1/2018 19:00:00"), DateTime.Parse("10/1/2018 22:00:00"), Enums.DutyStatus.OnDutyNotDriving, Enums.Jurisdiction.Us60), //onduty 3 new DutyStatusEvent("1", DateTime.Parse("10/1/2018 22:00:00"), DateTime.Parse("10/2/2018 00:00:00"), Enums.DutyStatus.Sleeper, Enums.Jurisdiction.Us60), //sleeper 2 new DutyStatusEvent("1", DateTime.Parse("10/2/2018 00:00:00"), DateTime.Parse("10/2/2018 08:00:00"), Enums.DutyStatus.Driving, Enums.Jurisdiction.Us60), //drive 8 new DutyStatusEvent("1", DateTime.Parse("10/2/2018 08:00:00"), DateTime.Parse("10/2/2018 16:00:00"), Enums.DutyStatus.Sleeper, Enums.Jurisdiction.Us60), //sleeper 8 new DutyStatusEvent("1", DateTime.Parse("10/2/2018 16:00:00"), DateTime.Parse("10/2/2018 19:00:00"), Enums.DutyStatus.Driving, Enums.Jurisdiction.Us60), //drive 3 new DutyStatusEvent("1", DateTime.Parse("10/2/2018 19:00:00"), DateTime.Parse("10/2/2018 22:00:00"), Enums.DutyStatus.OnDutyNotDriving, Enums.Jurisdiction.Us60), //onduty 3 new DutyStatusEvent("1", DateTime.Parse("10/2/2018 22:00:00"), DateTime.Parse("10/3/2018 00:00:00"), Enums.DutyStatus.Sleeper, Enums.Jurisdiction.Us60), //sleeper 2 }; var driverViolationTable = new LogAuditor().Audit(logs); Assert.IsTrue(driverViolationTable.Count() == 0); }
public void Us60Rolling70WeeklyTestNoViolations() { Stopwatch sw = new Stopwatch(); int driverCount = 100; DateTimeOffset now = DateTimeOffset.Now; var logs = new List <DutyStatusEvent>(); for (var i = 0; i < driverCount; i++) { for (var j = 180; j >= 0; j--) { if (j % 5 == 0) { logs.Add(new DutyStatusEvent(i.ToString(), new DateTime(now.AddDays(-j).Year, now.AddDays(-j).Month, now.AddDays(-j).Day, 0, 0, 0), new DateTime(now.AddDays(-j + 2).Year, now.AddDays(-j + 2).Month, now.AddDays(-j + 2).Day, 0, 0, 0), Enums.DutyStatus.OffDuty, Enums.Jurisdiction.Us60)); j--; } else { logs.Add(new DutyStatusEvent(i.ToString(), new DateTime(now.AddDays(-j).Year, now.AddDays(-j).Month, now.AddDays(-j).Day, 0, 0, 0), new DateTime(now.AddDays(-j).Year, now.AddDays(-j).Month, now.AddDays(-j).Day, 7, 0, 0), Enums.DutyStatus.OffDuty, Enums.Jurisdiction.Us60)); logs.Add(new DutyStatusEvent(i.ToString(), new DateTime(now.AddDays(-j).Year, now.AddDays(-j).Month, now.AddDays(-j).Day, 7, 0, 0), new DateTime(now.AddDays(-j).Year, now.AddDays(-j).Month, now.AddDays(-j).Day, 15, 0, 0), Enums.DutyStatus.Driving, Enums.Jurisdiction.Us60)); logs.Add(new DutyStatusEvent(i.ToString(), new DateTime(now.AddDays(-j).Year, now.AddDays(-j).Month, now.AddDays(-j).Day, 15, 0, 0), new DateTime(now.AddDays(-j).Year, now.AddDays(-j).Month, now.AddDays(-j).Day, 15, 30, 0), Enums.DutyStatus.OffDuty, Enums.Jurisdiction.Us60)); logs.Add(new DutyStatusEvent(i.ToString(), new DateTime(now.AddDays(-j).Year, now.AddDays(-j).Month, now.AddDays(-j).Day, 15, 30, 0), new DateTime(now.AddDays(-j).Year, now.AddDays(-j).Month, now.AddDays(-j).Day, 18, 30, 0), Enums.DutyStatus.Driving, Enums.Jurisdiction.Us60)); logs.Add(new DutyStatusEvent(i.ToString(), new DateTime(now.AddDays(-j).Year, now.AddDays(-j).Month, now.AddDays(-j).Day, 18, 30, 0), new DateTime(now.AddDays(-j).Year, now.AddDays(-j).Month, now.AddDays(-j).Day, 21, 00, 0), Enums.DutyStatus.OnDutyNotDriving, Enums.Jurisdiction.Us60)); logs.Add(new DutyStatusEvent(i.ToString(), new DateTime(now.AddDays(-j).Year, now.AddDays(-j).Month, now.AddDays(-j).Day, 21, 00, 0), new DateTime(now.AddDays(-j + 1).Year, now.AddDays(-j + 1).Month, now.AddDays(-j + 1).Day, 0, 0, 0), Enums.DutyStatus.OffDuty, Enums.Jurisdiction.Us60)); } } } sw.Start(); var driverViolationTable = new LogAuditor().Audit(logs); sw.Stop(); Assert.IsTrue(driverViolationTable.Count() == 0); Assert.IsTrue(sw.Elapsed < TimeSpan.FromSeconds(1)); }