コード例 #1
0
    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");
    }
コード例 #2
0
        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);
            }
        }