Beispiel #1
0
        public void TestTwoSchedulers()
        {
            SchedulerTester.WaitForStartOfSecond();

            SchedulerTester schedulerTester = new SchedulerTester();

            PeriodicSchedule schedule        = new PeriodicSchedule(hour: Hour.Every, minute: Minute.Every, second: Second.Every);
            List <TimeSpan>  expectedResults = new List <TimeSpan>
            {
                new TimeSpan(0, 0, 1),
                new TimeSpan(0, 0, 2),
                new TimeSpan(0, 0, 3),
                new TimeSpan(0, 0, 4),
                new TimeSpan(0, 0, 5),
                new TimeSpan(0, 0, 6),
                new TimeSpan(0, 0, 7),
                new TimeSpan(0, 0, 8),
                new TimeSpan(0, 0, 9)
            };

            schedulerTester.AddTest(schedule, expectedResults);

            schedule = new PeriodicSchedule(hour: Hour.Every, minute: Minute.Every, second: Second.Every);
            IScheduledFunction <int> scheduledFunction = Scheduler.Add <int>(schedule,
                                                                             function =>
                                                                             function.History.Count() > 0
                                                                              ? function.History.Last().Result + 1
                                                                              : 1, enabled: false);

            Scheduler.Enable(scheduledFunction);
            schedulerTester.Run();
            Scheduler.Disable(scheduledFunction);

            Queue <ScheduledFunctionResult <int> > results =
                new Queue <ScheduledFunctionResult <int> >(scheduledFunction.History);
            int resultCount = 0;

            while (results.Count > 0)
            {
                resultCount++;

                if (resultCount > 9)
                {
                    Assert.Fail("ScheduledFunction<int>: Too many results returned");
                    break;
                }

                Assert.AreEqual(resultCount, results.Dequeue().Result);
            }

            if (resultCount < 9)
            {
                Assert.Fail("ScheduledFunction<int>: Not enough results returned");
            }
        }
Beispiel #2
0
        public void TestDisable()
        {
            SchedulerTester.WaitForStartOfSecond();

            SchedulerTester schedulerTester = new SchedulerTester();

            PeriodicSchedule schedule        = new PeriodicSchedule(hour: Hour.Every, minute: Minute.Every, second: Second.Every);
            List <TimeSpan>  expectedResults = new List <TimeSpan>
            {
                new TimeSpan(0, 0, 1),
                new TimeSpan(0, 0, 2),
                new TimeSpan(0, 0, 3),
                new TimeSpan(0, 0, 4),
                new TimeSpan(0, 0, 5),
                new TimeSpan(0, 0, 6),
                new TimeSpan(0, 0, 7),
                new TimeSpan(0, 0, 8),
                new TimeSpan(0, 0, 9)
            };

            schedulerTester.AddTest(schedule, expectedResults);

            schedule        = new PeriodicSchedule(hour: Hour.Every, minute: Minute.Every, second: Second.Every);
            expectedResults = new List <TimeSpan>
            {
                new TimeSpan(0, 0, 6),
                new TimeSpan(0, 0, 7),
                new TimeSpan(0, 0, 8),
                new TimeSpan(0, 0, 9)
            };
            IScheduledFunction <DateTime> scheduledFunction = schedulerTester.AddTest(schedule, expectedResults);

            schedulerTester.Start();

            Thread.Sleep(200);
            Scheduler.Disable(scheduledFunction);
            Thread.Sleep(6000);
            Scheduler.Enable(scheduledFunction);

            while (!schedulerTester.Completed())
            {
                Thread.Sleep(10);
            }
            schedulerTester.Stop();

            schedulerTester.CheckResults();
        }