{
// interval
time_t next_begin = get_next_point(calc_from,Begin,true);
-std::cerr << "next_begin = " << next_begin << std::endl;
-std::cerr << "next_end = " << get_next_point(calc_from,End-1,true) << std::endl;
if (next_begin > get_next_point(calc_from,End-1,true))
{
// next begin > next end means we are at the begin or within the interval
time_t interval_begin=get_previousnow_point(calc_from,Begin,true);
-std::cerr << "interval_begin = " << interval_begin << std::endl;
time_t within_interval=calc_from - interval_begin;
time_t since_lastrun=within_interval % Every;
time_t next_exec=calc_from+(Every-since_lastrun);
-std::cerr << "next_exec = " << next_exec << std::endl;
-
// next step at or after end?
if (next_exec > get_next_point(calc_from,End-1,true))
return get_next_point(calc_from,Begin,true);
CPPUNIT_TEST(IntervalInSecondDSTBackwards2);
CPPUNIT_TEST(IntervalOutFirstDSTBackwards1);
CPPUNIT_TEST(IntervalOutFirstDSTBackwards2);
- CPPUNIT_TEST(IntervalOutFirstDSTBackwards3);
- CPPUNIT_TEST(IntervalOutFirstDSTBackwards4);
CPPUNIT_TEST(IntervalOutSecondDSTBackwards1);
CPPUNIT_TEST(IntervalDSTBackwardsWholeday1);
CPPUNIT_TEST(IntervalDSTBackwardsWholeday2);
void IntervalOutFirstDSTBackwards1()
{
- // FIXME: is Sun Oct 26 02:30:00 CET 2008
WeekCron cron("0123456",9000,18000,60);
// calc at: Sun Oct 26 02:29:00 CEST 2008
- // expected next run: Sun Oct 26 02:30:00 CEST 2008
- CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1224981000), cron.get_next_run(1224980940));
+ // expected next run: Sun Oct 26 02:30:00 CET 2008
+ CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1224984600), cron.get_next_run(1224980940));
}
void IntervalOutFirstDSTBackwards2()
{
- // FIXME: is Sun Oct 26 02:30:00 CET 2008
- WeekCron cron("0123456",9000,18000,60);
- // calc at: Sun Oct 26 02:30:00 CEST 2008
- // expected next run: Sun Oct 26 02:31:00 CEST 2008
- CPPUNIT_ASSERT_EQUAL( static_cast<time_t>(1224981060), cron.get_next_run(1224981000));
- }
-
- void IntervalOutFirstDSTBackwards3()
- {
- // FIXME: is Sun Oct 26 02:30:00 CET 2008
- 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>(1224982800), cron.get_next_run(1224982799));
- }
-
- void IntervalOutFirstDSTBackwards4()
- {
WeekCron cron("0123456",9000,18000,60);
// calc at: Sun Oct 26 02:29:00 CET 2008
// expected next run: Sun Oct 26 02:30:00 CET 2008
bool conversion_ok = (localtime_r(&result, &calc_daybegin) != NULL);
CPPUNIT_ASSERT_EQUAL(true, conversion_ok);
- calc_daybegin.tm_hour=0;
- calc_daybegin.tm_min=0;
- calc_daybegin.tm_sec=0;
+ int remain=daysec;
+
+ calc_daybegin.tm_hour=remain/3600;
+ remain-=calc_daybegin.tm_hour*3600;
+
+ calc_daybegin.tm_min=remain/60;
+ remain-=calc_daybegin.tm_min*60;
+
+ calc_daybegin.tm_sec=remain;
+
// tm_isdst=-1 means to use the dst in use at the given time
calc_daybegin.tm_isdst=-1;
- time_t daybegin = mktime(&calc_daybegin);
+ time_t daytime = mktime(&calc_daybegin);
- CPPUNIT_ASSERT_EQUAL(daybegin + daysec, result);
+ CPPUNIT_ASSERT_EQUAL(daytime, result);
}
}
};