public void TestBadSchedule()
        {
            var jobSchedule       = new JobSchedule();
            var nextExecutionTime = jobSchedule.GetNextExecution(DateTime.UtcNow);

            Assert.That(!nextExecutionTime.HasValue, "Empty schedule entry should have no next execution time");
        }
        public void TestSunday()
        {
            var now = DateTime.UtcNow;
            var timeOfDaySeconds = JobSchedule.TimeSeconds(now);
            var execNow          = now.Date.AddDays(6 - (int)now.DayOfWeek).Add(JobSchedule.TimeOfDay(timeOfDaySeconds));

            var jobsSchedule = new JobSchedule()
            {
                ExecutionTime     = timeOfDaySeconds,
                ExecutionSchedule = 1
            };
            var nextExecutionTime = jobsSchedule.GetNextExecution(execNow);
            var expectedResult    = execNow.AddDays(1);

            Assert.That(nextExecutionTime.Equals(expectedResult), string.Format("Expected next execution time of {0}, got {1}", expectedResult, nextExecutionTime));
        }
        public void TestEverydayExecution()
        {
            var now = DateTime.UtcNow;
            var timeOfDaySeconds = JobSchedule.TimeSeconds(now);
            var execNow          = now.Date.Add(JobSchedule.TimeOfDay(timeOfDaySeconds));

            var jobSchedule = new JobSchedule()
            {
                ExecutionTime = timeOfDaySeconds,

                // 0111 1111 in hex
                ExecutionSchedule = 0x7F
            };

            var nextExecutionTime = jobSchedule.GetNextExecution(execNow);
            var expectedResult    = execNow.AddDays(1);

            Assert.That(nextExecutionTime.Equals(expectedResult), string.Format("Expected next execution time of {0}, got {1}", expectedResult, nextExecutionTime));
        }