]>
Commit | Line | Data |
---|---|---|
2644dcd1 EK |
1 | #include <stdio.h> |
2 | #include <string.h> | |
3 | #include <stdlib.h> | |
4 | #include <unistd.h> | |
5 | #include "tap/basic.h" | |
6 | ||
7 | #include "s_newconf.h" | |
8 | ||
9 | #define MSG "%s:%d (%s)", __FILE__, __LINE__, __FUNCTION__ | |
10 | ||
11 | #define MINUTE (60) | |
12 | #define HOUR (MINUTE * 60) | |
13 | #define DAY (HOUR * 24) | |
14 | #define WEEK (DAY * 7) | |
15 | ||
16 | static void valid_temp_time1(void) | |
17 | { | |
18 | time_t t; | |
19 | t = valid_temp_time("1"); | |
20 | is_int(MINUTE, t, MSG); | |
21 | t = valid_temp_time("1m"); | |
22 | is_int(MINUTE, t, MSG); | |
23 | t = valid_temp_time("1h"); | |
24 | is_int(HOUR, t, MSG); | |
25 | t = valid_temp_time("1d"); | |
26 | is_int(DAY, t, MSG); | |
27 | t = valid_temp_time("1w"); | |
28 | is_int(WEEK, t, MSG); | |
29 | ||
30 | t = valid_temp_time("2d"); | |
31 | is_int(2 * DAY, t, MSG); | |
32 | ||
33 | t = valid_temp_time("1w2d3h4m"); | |
34 | is_int(1 * WEEK + 2 * DAY + 3 * HOUR + 4 * MINUTE, t, MSG); | |
35 | t = valid_temp_time("1w2d3h4"); | |
36 | is_int(1 * WEEK + 2 * DAY + 3 * HOUR + 4 * MINUTE, t, MSG); | |
37 | ||
38 | t = valid_temp_time("4m3h2d1w"); | |
39 | is_int(1 * WEEK + 2 * DAY + 3 * HOUR + 4 * MINUTE, t, MSG); | |
40 | ||
41 | t = valid_temp_time("7000w"); | |
42 | is_int(52 * WEEK, t, MSG); | |
43 | } | |
44 | ||
1fcdacb4 EK |
45 | static void valid_temp_time_invalid(void) |
46 | { | |
47 | time_t t; | |
48 | t = valid_temp_time("-2w"); | |
49 | is_int(-1, t, MSG); | |
50 | ||
51 | t = valid_temp_time("hello"); | |
52 | is_int(-1, t, MSG); | |
53 | ||
54 | t = valid_temp_time("m"); | |
55 | is_int(-1, t, MSG); | |
56 | ||
57 | t = valid_temp_time("1w-1w"); | |
58 | is_int(-1, t, MSG); | |
59 | } | |
60 | ||
61 | static void valid_temp_time_overflow(void) | |
62 | { | |
63 | time_t max_time = (uintmax_t) (~(time_t)0) >> 1; | |
64 | char s[100]; | |
65 | time_t t; | |
66 | ||
67 | snprintf(s, sizeof s, "%" PRIuMAX "m", (uintmax_t) max_time / 60 + 2); | |
68 | t = valid_temp_time(s); | |
69 | is_int(52 * WEEK, t, MSG); | |
70 | ||
71 | snprintf(s, sizeof s, "%" PRIuMAX "m%" PRIuMAX "m", (uintmax_t) max_time / 60 - 1, (uintmax_t) max_time / 60 - 1); | |
72 | t = valid_temp_time(s); | |
73 | is_int(52 * WEEK, t, MSG); | |
74 | } | |
75 | ||
2644dcd1 EK |
76 | int main(int argc, char *argv[]) |
77 | { | |
78 | plan_lazy(); | |
79 | ||
80 | valid_temp_time1(); | |
1fcdacb4 EK |
81 | valid_temp_time_invalid(); |
82 | valid_temp_time_overflow(); | |
2644dcd1 EK |
83 | |
84 | return 0; | |
85 | } |