1 #include <ccan/time/time.h>
2 #include <ccan/time/time.c>
3 #include <ccan/tap/tap.h>
7 struct timeval t1
, t2
, t3
, zero
= { 0, 0 };
16 t3
= time_sub(t2
, t1
);
17 ok1(t3
.tv_sec
> 0 || t3
.tv_usec
>= 0);
18 t3
= time_sub(t2
, t2
);
19 ok1(t3
.tv_sec
== 0 && t3
.tv_usec
== 0);
20 t3
= time_sub(t1
, t1
);
21 ok1(t3
.tv_sec
== 0 && t3
.tv_usec
== 0);
26 ok1(!time_eq(t1
, t3
));
27 ok1(!time_eq(t2
, t3
));
29 /* Make sure t2 > t1. */
32 t2
= time_add(t2
, t3
);
34 /* Test time_less and time_greater. */
35 ok1(!time_eq(t1
, t2
));
36 ok1(!time_greater(t1
, t2
));
37 ok1(time_less(t1
, t2
));
38 ok1(time_greater(t2
, t1
));
39 ok1(!time_less(t2
, t1
));
42 t2
= time_add(t2
, t3
);
43 ok1(!time_eq(t1
, t2
));
44 ok1(!time_greater(t1
, t2
));
45 ok1(time_less(t1
, t2
));
46 ok1(time_greater(t2
, t1
));
47 ok1(!time_less(t2
, t1
));
49 t3
= time_sub(t2
, zero
);
51 t3
= time_sub(t2
, t2
);
52 ok1(time_eq(t3
, zero
));
54 /* time_from_msec / time_to_msec */
55 t3
= time_from_msec(500);
57 ok1(t3
.tv_usec
== 500000);
58 ok1(time_to_msec(t3
) == 500);
60 t3
= time_from_msec(1000);
63 ok1(time_to_msec(t3
) == 1000);
65 t3
= time_from_msec(1500);
67 ok1(t3
.tv_usec
== 500000);
68 ok1(time_to_msec(t3
) == 1500);
71 t3
= time_from_usec(500000);
73 ok1(t3
.tv_usec
== 500000);
74 ok1(time_to_usec(t3
) == 500000);
76 t3
= time_from_usec(1000000);
79 ok1(time_to_usec(t3
) == 1000000);
81 t3
= time_from_usec(1500000);
83 ok1(t3
.tv_usec
== 500000);
84 ok1(time_to_usec(t3
) == 1500000);
87 t3
= time_sub(time_sub(t2
, time_from_msec(500)), time_from_msec(500));
88 ok1(t3
.tv_sec
== t2
.tv_sec
- 1);
89 ok1(t3
.tv_usec
== t2
.tv_usec
);
91 /* time_divide and time_multiply */
95 t3
= time_divide(t1
, 2);
97 ok1(t3
.tv_usec
== 50);
99 t3
= time_divide(t1
, 100);
101 ok1(t3
.tv_usec
== 1);
103 t3
= time_multiply(t3
, 100);
104 ok1(time_eq(t3
, t1
));
106 t3
= time_divide(t1
, 200);
108 ok1(t3
.tv_usec
== 500000);
110 return exit_status();