CPPUNIT_TEST(StartMidnightTomorrow);
CPPUNIT_TEST(StartLastDaysec);
CPPUNIT_TEST(HalfOpenInterval);
+ CPPUNIT_TEST(LongBeforeDSTBackwards);
+ CPPUNIT_TEST(BeforeDSTBackwards);
+ CPPUNIT_TEST(AtDSTBackwards);
+ CPPUNIT_TEST(DuringDSTBackwards);
+ CPPUNIT_TEST(EndDSTBackwards1);
+ CPPUNIT_TEST(EndDSTBackwards2);
+ CPPUNIT_TEST(EndDSTBackwards3);
+ CPPUNIT_TEST(EndDSTBackwards4);
+ CPPUNIT_TEST(LongBeforeDSTForward);
+ CPPUNIT_TEST(BeforeDSTForward);
+ CPPUNIT_TEST(AtDSTForward);
+ CPPUNIT_TEST(DuringDSTForward);
+ CPPUNIT_TEST(EndDSTForward);
// Intervals
CPPUNIT_TEST(IntervalBeginToday);
CPPUNIT_TEST(IntervalBeginNow);
CPPUNIT_TEST(IntervalBeginStep);
CPPUNIT_TEST(IntervalWithin);
- CPPUNIT_TEST(IntervalLaststep);
+ CPPUNIT_TEST(IntervalLaststep1);
+ CPPUNIT_TEST(IntervalLaststep2);
+ CPPUNIT_TEST(IntervalLaststep3);
+ CPPUNIT_TEST(IntervalLaststep4);
+ CPPUNIT_TEST(IntervalLaststep5);
CPPUNIT_TEST(IntervalLaststepMatch);
CPPUNIT_TEST(IntervalEnd);
CPPUNIT_TEST(IntervalBigstep);
CPPUNIT_ASSERT_THROW(cron.get_next_run(1233097200),std::runtime_error);
}
+ void LongBeforeDSTBackwards()
+ {
+ WeekCron cron("0123456",75600);
+ // calc at: Sun Oct 26 00:00:00 CEST 2008
+ // expected next run: Sun Oct 26 21:00:00 CET 2008
+ CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1225051200), cron.get_next_run(1224968400));
+ }
+
+ void BeforeDSTBackwards()
+ {
+ WeekCron cron("0123456",7200);
+ // calc at: Sun Oct 26 02:59:59 CEST 2008
+ // expected next run: Sun Oct 26 02:00:00 CET 2008
+ CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1224979200), cron.get_next_run(1224979199));
+ }
+
+ void AtDSTBackwards()
+ {
+ WeekCron cron("0123456",7200);
+ // calc at: Sun Oct 26 02:00:00 CET 2008
+ // expected next run: Mon Oct 27 02:00:00 CET 2008
+ CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1225069200), cron.get_next_run(1224979200));
+ }
+
+ void DuringDSTBackwards()
+ {
+ WeekCron cron("0123456",7200);
+ // calc at: Sun Oct 26 02:00:01 CET 2008
+ // expected next run: Mon Oct 27 02:00:00 CET 2008
+ CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1225069200), cron.get_next_run(1224979201));
+ }
+
+ void EndDSTBackwards1()
+ {
+ WeekCron cron("0123456",10800);
+ // calc at: Sun Oct 26 02:00:00 CET 2008
+ // expected next run: Sun Oct 26 03:00:00 CET 2008
+ CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1224986400), cron.get_next_run(1224979200));
+ }
+
+ void EndDSTBackwards2()
+ {
+ WeekCron cron("0123456",10800);
+ // calc at: Sun Oct 26 02:00:01 CET 2008
+ // expected next run: Sun Oct 26 03:00:00 CET 2008
+ CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1224986400), cron.get_next_run(1224979201));
+ }
+
+ void EndDSTBackwards3()
+ {
+ WeekCron cron("0123456",10799);
+ // calc at: Sun Oct 26 02:00:01 CET 2008
+ // expected next run: Sun Oct 26 02:59:59 CET 2008
+ CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1224982799), cron.get_next_run(1224979201));
+ }
+
+ void EndDSTBackwards4()
+ {
+ WeekCron cron("0123456",10799);
+ // calc at: Sun Oct 26 03:03:20 CET 2008
+ // expected next run: Mon Oct 27 02:59:59 CET 2008
+ CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1225072799), cron.get_next_run(1224983000));
+ }
+
+ void LongBeforeDSTForward()
+ {
+ WeekCron cron("0123456",75600);
+ // calc at: Sat Mar 28 22:00:00 CET 2009
+ // expected next run: Sun Mar 29 21:00:00 CEST 2009
+ CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1238349600), cron.get_next_run(1238274000));
+ }
+
+ void BeforeDSTForward()
+ {
+ WeekCron cron("0123456",7200);
+ // calc at: Sun Mar 29 01:59:59 CET 2009
+ // expected next run: Sun Mar 29 03:00:00 CEST 2009
+ CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1238288400), cron.get_next_run(1238288399));
+ }
+
+ void AtDSTForward()
+ {
+ WeekCron cron("0123456",7200);
+ // calc at: Sun Mar 29 03:00:00 CEST 2009
+ // expected next run: Mon Mar 30 02:00:00 CEST 2009
+ CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1238367600), cron.get_next_run(1238288400));
+ }
+
+ void DuringDSTForward()
+ {
+ WeekCron cron("0123456",9000);
+ // calc at: Sun Mar 29 01:59:59 CET 2009
+ // expected next run: Sun Mar 29 03:30:00 CEST 2009
+ CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1238290200), cron.get_next_run(1238288399));
+ }
+
+ void EndDSTForward()
+ {
+ WeekCron cron("0123456",10800);
+ // calc at: Sun Mar 29 01:59:59 CET 2009
+ // expected next run: Sun Mar 29 03:00:00 CEST 2009
+ CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1238288400), cron.get_next_run(1238288399));
+ }
+
+
/////////////////////////////////////////////////////
// Intervals
/////////////////////////////////////////////////////
CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1233100830), cron.get_next_run(1233100822));
}
- void IntervalLaststep()
+ void IntervalLaststep1()
{
WeekCron cron("2345",3600,7200,11);
CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1233187200), cron.get_next_run(1233104399));
}
+ void IntervalLaststep2()
+ {
+ WeekCron cron("2345",3600,7200,11);
+ CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1233187200), cron.get_next_run(1233104398));
+ }
+
+ void IntervalLaststep3()
+ {
+ WeekCron cron("2345",3600,7199,10);
+ CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1233187200), cron.get_next_run(1233104397));
+ }
+
+ void IntervalLaststep4()
+ {
+ WeekCron cron("2345",3600,7200,3599);
+ CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1233104399), cron.get_next_run(1233104398));
+ }
+
+ void IntervalLaststep5()
+ {
+ WeekCron cron("2345",3600,7200,3598);
+ CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1233187200), cron.get_next_run(1233104398));
+ }
+
void IntervalLaststepMatch()
{
WeekCron cron("2345",3600,7200,10);
WeekCron cron("2345",0,0,86400);
CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1233183600), cron.get_next_run(1233097200));
}
-
-
-
- // TODO: Tom, add some evil tests here, im done here for yesterday ;)
- // ideas:
- // - daylightsaving on
- // - start, end
- // - interval in between
- // - at the end of dst-day
- // - daylightsaving off
- // - start, end
- // - interval in between
- // - at the end of dst-day
- // - year-turn (does our old mktime this correctly?)
- // - feb 29
-
};
CPPUNIT_TEST_SUITE_REGISTRATION(TestCronFunc);