even more (interval-) unit tests
authorGerd von Egidy <gerd.von.egidy@intra2net.com>
Fri, 30 Jan 2009 11:04:43 +0000 (12:04 +0100)
committerGerd von Egidy <gerd.von.egidy@intra2net.com>
Fri, 30 Jan 2009 17:21:41 +0000 (18:21 +0100)
test/test_cron.cpp

index d55ea93..d51c97b 100644 (file)
@@ -81,6 +81,18 @@ class TestCronFunc : public TestFixture
     CPPUNIT_TEST(IntervalAfterOnce);
     CPPUNIT_TEST(IntervalOnceShort);
     CPPUNIT_TEST(IntervalTooShort);
+    CPPUNIT_TEST(IntervalOverDSTBackwards1);
+    CPPUNIT_TEST(IntervalOverDSTBackwards2);
+    CPPUNIT_TEST(IntervalOverDSTBackwards3);
+    CPPUNIT_TEST(IntervalOverDSTBackwards4);
+    CPPUNIT_TEST(IntervalInFirstDSTBackwards1);
+    CPPUNIT_TEST(IntervalInFirstDSTBackwards2);
+    CPPUNIT_TEST(IntervalInSecondDSTBackwards1);
+    CPPUNIT_TEST(IntervalInSecondDSTBackwards2);
+    CPPUNIT_TEST(IntervalOutFirstDSTBackwards1);
+    CPPUNIT_TEST(IntervalOutFirstDSTBackwards2);
+    CPPUNIT_TEST(IntervalOutFirstDSTBackwards3);
+    CPPUNIT_TEST(IntervalOutFirstDSTBackwards4);
 
     CPPUNIT_TEST(StartHourStaysTheSameTill2038);
 
@@ -463,6 +475,102 @@ public:
         CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1233183600), cron.get_next_run(1233097200));
     }
 
+    void IntervalOverDSTBackwards1()
+    {
+        WeekCron cron("0123456",0,14400,60);
+        // calc at: Sun Oct 26 01:59:59 2008
+        // expected next run: Sun Oct 26 02:00:00 2008
+        CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1224979200), cron.get_next_run(1224979199));
+    }
+
+    void IntervalOverDSTBackwards2()
+    {
+        WeekCron cron("0123456",0,14400,60);
+        // calc at: Sun Oct 26 02:29:59 2008
+        // expected next run: Sun Oct 26 02:30:00 2008
+        CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1224981000), cron.get_next_run(1224980999));
+    }
+
+    void IntervalOverDSTBackwards3()
+    {
+        WeekCron cron("0123456",0,14400,60);
+        // calc at: Sun Oct 26 02:59:59 2008
+        // expected next run: Sun Oct 26 02:00:00 2008
+        CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1224982800), cron.get_next_run(1224982799));
+    }
+
+    void IntervalOverDSTBackwards4()
+    {
+        WeekCron cron("0123456",0,14400,60);
+        // calc at: Sun Oct 26 02:59:59 2008
+        // expected next run: Mon Oct 27 00:00:00 2008
+        CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1225062000), cron.get_next_run(1224986399));
+    }
+
+    void IntervalInFirstDSTBackwards1()
+    {
+        WeekCron cron("0123456",0,9000,60);
+        // calc at: Sun Oct 26 02:28:59 2008
+        // expected next run: Sun Oct 26 02:29:00 2008
+        CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1224980940), cron.get_next_run(1224980939));
+    }
+
+    void IntervalInFirstDSTBackwards2()
+    {
+        WeekCron cron("0123456",0,9000,60);
+        // calc at: Sun Oct 26 02:29:01 2008
+        // expected next run: Mon Oct 27 00:00:00 2008
+        CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1225062000), cron.get_next_run(1224980941));
+    }
+
+    void IntervalInSecondDSTBackwards1()
+    {
+        WeekCron cron("0123456",0,12600,60);
+        // calc at: Sun Oct 26 02:28:59 2008
+        // expected next run: Sun Oct 26 02:29:00 2008
+        CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1224984540), cron.get_next_run(1224984539));
+    }
+
+    void IntervalInSecondDSTBackwards2()
+    {
+        WeekCron cron("0123456",0,12600,60);
+        // calc at: Sun Oct 26 02:29:01 2008
+        // expected next run: Mon Oct 27 00:00:00 2008
+        CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1225062000), cron.get_next_run(1224984541));
+    }
+
+    void IntervalOutFirstDSTBackwards1()
+    {
+        WeekCron cron("0123456",9000,18000,60);
+        // calc at: Sun Oct 26 02:29:00 2008
+        // expected next run: Sun Oct 26 02:30:00 2008
+        CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1224981000), cron.get_next_run(1224980940));
+    }
+
+    void IntervalOutFirstDSTBackwards2()
+    {
+        WeekCron cron("0123456",9000,18000,60);
+        // calc at: Sun Oct 26 02:30:00 2008
+        // expected next run: Sun Oct 26 02:31:00 2008
+        CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1224981060), cron.get_next_run(1224981000));
+    }
+
+    void IntervalOutFirstDSTBackwards3()
+    {
+        WeekCron cron("0123456",9000,18000,60);
+        // 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 IntervalOutFirstDSTBackwards4()
+    {
+        WeekCron cron("0123456",9000,18000,60);
+        // calc at: Sun Oct 26 02:29:00 2008
+        // expected next run: Sun Oct 26 02:30:00 2008
+        CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1224984600), cron.get_next_run(1224984540));
+    }
+
     void StartHourStaysTheSameTill2038()
     {
         int daysec = 79200;