Roxen.git/server/etc/modules/Variable.pmod/Schedule.pike:9: Inside #if constant(roxen)
//! In the "index every n:th x-day at y o'clock" the n-range is
//! 1 to 9, the units are day and all the weekdays. The time range for
//! y is all hours in a day.
// Locale macros
//<locale-token project="roxen_config"> LOCALE </locale-token>
#define LOCALE(X,Y) \
([string](mixed)Locale.translate("roxen_config",roxenp()->locale->get(),X,Y))
+ #else
+
+ // Test mode.
+
+ #define LOCALE(X, Y) (Y)
+
+ array(int) val = ({ });
+
+ array(int) query()
+ {
+ return val;
+ }
+
+ // Deterministic timezone...
+ #define localtime(X) gmtime(X)
+
+ int main(int argc, array(string) argv)
+ {
+ int successes;
+ int failures;
+ foreach(({
+ ({ ({ 0, 2, 1, 6, 3, }),
+ // Disabled.
+ ({ 0, -1 }),
+ }),
+ ({ ({ 1, 2, 1, 6, 3, }),
+ // Every other hour.
+ // 2022-06-22T14:11:43 (Wed) ==> 2022-06-22T16:11:43 (Wed)
+ ({ 1655907103, 1655914303 }),
+ }),
+ ({ ({ 2, 2, 1, 6, 3, }),
+ // Every Friday at 03:00.
+ // 2022-06-22T14:11:43 (Wed) ==> 2022-06-24T03:00:00 (Fri)
+ ({ 1655907103, 1656039600 }),
+ // 2022-06-23T14:11:43 (Thu) ==> 2022-06-24T03:00:00 (Fri)
+ ({ 1655993503, 1656039600 }),
+ // 2022-06-24T02:11:43 (Fri) ==> 2022-06-24T03:00:00 (Fri)
+ ({ 1656036703, 1656039600 }),
+ // 2022-06-24T03:11:43 (Fri) ==> 2022-07-01T03:00:00 (Fri)
+ ({ 1656040303, 1656644400 }),
+ // 2022-06-24T03:21:43 (Fri) ==> 2022-07-01T03:00:00 (Fri)
+ ({ 1656040903, 1656644400 }),
+ // 2022-06-24T03:51:43 (Fri) ==> 2022-07-01T03:00:00 (Fri)
+ ({ 1656042703, 1656644400 }),
+ // 2022-06-24T04:11:43 (Fri) ==> 2022-07-01T03:00:00 (Fri)
+ ({ 1656043903, 1656644400 }),
+ // 2022-06-24T14:11:43 (Fri) ==> 2022-07-01T03:00:00 (Fri)
+ ({ 1656079903, 1656644400 }),
+ }),
+ }), array(array(int)) test) {
+ val = test[0];
+ while(1) {
+ foreach(test[1..], [int when, int expected]) {
+ int got = get_next(when);
+ if (got != expected) {
+ failures++;
+ werror("Test failed for %O\n"
+ "When: %d\n"
+ "%O\n"
+ "Expected: %d\n"
+ "%O\n"
+ "Got: %d\n"
+ "%O\n",
+ test,
+ when, localtime(when),
+ expected, localtime(expected),
+ got, localtime(got));
+ } else {
+ successes++;
+ }
+ }
+ break;
+ }
+ }
+ werror("Succeeded on %d, Failed on %d.\n", successes, failures);
+ return !!failures;
+ }
+
#endif
#define VALS_SORT 0
#define VALS_REPEAT_HOURS 1
#define VALS_REPEAT_COUNT 2
#define VALS_DAY 3
#define VALS_HOUR 4
//! Transforms the form variables given in the @[vl] attribute
//! to the internal time representation as follows.