]> jfr.im git - solanum.git/blame - tests/misc.c
Test some edge cases of valid_temp_time
[solanum.git] / tests / misc.c
CommitLineData
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
16static 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
45static 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
61static 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
76int 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}