static void Main(string[] args) { var shiftScheduler = new ShiftScheduler(new DateTime(2018, 01, 01)); var requestedShift = shiftScheduler.GetShift(new DateTime(2018, 01, 05)); Console.WriteLine(requestedShift.IsWorkDay ? $"Scheduled from ${requestedShift.HoursBegin}{requestedShift.MinutesBegin:00} " + $"to {requestedShift.HoursEnd}{requestedShift.MinutesEnd:00}" : "No work today"); }
public void TestScheduleSleepTimes() { var input = new List <GuardEvent> { new GuardEvent { Time = new TimeStamp { Year = 1518, Month = 11, Day = 1, Hour = 0, Minute = 0 }, Type = EventType.StartShift, Guard = 10 }, new GuardEvent { Time = new TimeStamp { Year = 1518, Month = 11, Day = 1, Hour = 0, Minute = 5 }, Type = EventType.FallAsleep, Guard = null }, new GuardEvent { Time = new TimeStamp { Year = 1518, Month = 11, Day = 1, Hour = 0, Minute = 25 }, Type = EventType.WakeUp, Guard = null }, new GuardEvent { Time = new TimeStamp { Year = 1518, Month = 11, Day = 1, Hour = 23, Minute = 58 }, Type = EventType.StartShift, Guard = 99 }, new GuardEvent { Time = new TimeStamp { Year = 1518, Month = 11, Day = 2, Hour = 0, Minute = 40 }, Type = EventType.FallAsleep, Guard = null }, new GuardEvent { Time = new TimeStamp { Year = 1518, Month = 11, Day = 2, Hour = 0, Minute = 50 }, Type = EventType.WakeUp, Guard = null } }; var expected = new List <Guard> { new Guard { Number = 10, NapTimes = new List <NapTime> { new NapTime { Start = new TimeStamp { Year = 1518, Month = 11, Day = 1, Hour = 0, Minute = 5 }, Duration = 20 } } }, new Guard { Number = 99, NapTimes = new List <NapTime> { new NapTime { Start = new TimeStamp { Year = 1518, Month = 11, Day = 2, Hour = 0, Minute = 40 }, Duration = 10 } } } }; var actual = ShiftScheduler.ScheduleSleepTimes(input); // XUnit's deep equal doesn't seem to work recursively... Assert.Equal(expected.Count, actual.Count); var i1 = expected.GetEnumerator(); var i2 = actual.GetEnumerator(); while (i1.MoveNext()) { i2.MoveNext(); CompareGuards(i1.Current, i2.Current); } }