s3:lib/events: make use of tevent_common_loop_timer_delay()
[Samba/gebeck_regimport.git] / lib / replace / test / strptime.c
blob5bf03f5b35348d28cd420c13ac2ce99b7679b936
2 #ifdef LIBREPLACE_CONFIGURE_TEST_STRPTIME
4 #include <stdio.h>
5 #include <stdlib.h>
6 #include <time.h>
8 #define true 1
9 #define false 0
11 #ifndef __STRING
12 #define __STRING(x) #x
13 #endif
15 /* make printf a no-op */
16 #define printf if(0) printf
18 #else /* LIBREPLACE_CONFIGURE_TEST_STRPTIME */
20 #include "replace.h"
21 #include "system/time.h"
22 #include "replace-test.h"
24 #endif /* LIBREPLACE_CONFIGURE_TEST_STRPTIME */
26 int libreplace_test_strptime(void)
28 const char *s = "20070414101546Z";
29 char *ret;
30 struct tm t, t2;
32 memset(&t, 0, sizeof(t));
33 memset(&t2, 0, sizeof(t2));
35 printf("test: strptime\n");
37 ret = strptime(s, "%Y%m%d%H%M%S", &t);
38 if ( ret == NULL ) {
39 printf("failure: strptime [\n"
40 "returned NULL\n"
41 "]\n");
42 return false;
45 if ( *ret != 'Z' ) {
46 printf("failure: strptime [\n"
47 "ret doesn't point to 'Z'\n"
48 "]\n");
49 return false;
52 ret = strptime(s, "%Y%m%d%H%M%SZ", &t2);
53 if ( ret == NULL ) {
54 printf("failure: strptime [\n"
55 "returned NULL with Z\n"
56 "]\n");
57 return false;
60 if ( *ret != '\0' ) {
61 printf("failure: strptime [\n"
62 "ret doesn't point to '\\0'\n"
63 "]\n");
64 return false;
67 #define CMP_TM_ELEMENT(t1,t2,elem) \
68 if (t1.elem != t2.elem) { \
69 printf("failure: strptime [\n" \
70 "result differs if the format string has a 'Z' at the end\n" \
71 "element: %s %d != %d\n" \
72 "]\n", \
73 __STRING(elen), t1.elem, t2.elem); \
74 return false; \
77 CMP_TM_ELEMENT(t,t2,tm_sec);
78 CMP_TM_ELEMENT(t,t2,tm_min);
79 CMP_TM_ELEMENT(t,t2,tm_hour);
80 CMP_TM_ELEMENT(t,t2,tm_mday);
81 CMP_TM_ELEMENT(t,t2,tm_mon);
82 CMP_TM_ELEMENT(t,t2,tm_year);
83 CMP_TM_ELEMENT(t,t2,tm_wday);
84 CMP_TM_ELEMENT(t,t2,tm_yday);
85 CMP_TM_ELEMENT(t,t2,tm_isdst);
87 if (t.tm_sec != 46) {
88 printf("failure: strptime [\n"
89 "tm_sec: expected: 46, got: %d\n"
90 "]\n",
91 t.tm_sec);
92 return false;
95 if (t.tm_min != 15) {
96 printf("failure: strptime [\n"
97 "tm_min: expected: 15, got: %d\n"
98 "]\n",
99 t.tm_min);
100 return false;
103 if (t.tm_hour != 10) {
104 printf("failure: strptime [\n"
105 "tm_hour: expected: 10, got: %d\n"
106 "]\n",
107 t.tm_hour);
108 return false;
111 if (t.tm_mday != 14) {
112 printf("failure: strptime [\n"
113 "tm_mday: expected: 14, got: %d\n"
114 "]\n",
115 t.tm_mday);
116 return false;
119 if (t.tm_mon != 3) {
120 printf("failure: strptime [\n"
121 "tm_mon: expected: 3, got: %d\n"
122 "]\n",
123 t.tm_mon);
124 return false;
127 if (t.tm_year != 107) {
128 printf("failure: strptime [\n"
129 "tm_year: expected: 107, got: %d\n"
130 "]\n",
131 t.tm_year);
132 return false;
135 if (t.tm_wday != 6) { /* saturday */
136 printf("failure: strptime [\n"
137 "tm_wday: expected: 6, got: %d\n"
138 "]\n",
139 t.tm_wday);
140 return false;
143 if (t.tm_yday != 103) {
144 printf("failure: strptime [\n"
145 "tm_yday: expected: 103, got: %d\n"
146 "]\n",
147 t.tm_yday);
148 return false;
151 /* we don't test this as it depends on the host configuration
152 if (t.tm_isdst != 0) {
153 printf("failure: strptime [\n"
154 "tm_isdst: expected: 0, got: %d\n"
155 "]\n",
156 t.tm_isdst);
157 return false;
160 printf("success: strptime\n");
162 return true;
165 #ifdef LIBREPLACE_CONFIGURE_TEST_STRPTIME
166 int main (void)
168 int ret;
169 ret = libreplace_test_strptime();
170 if (ret == false) return 1;
171 return 0;
173 #endif