source: branches/samba-3.5.x/lib/replace/test/strptime.c

Last change on this file was 414, checked in by Herwig Bauernfeind, 15 years ago

Samba 3.5.0: Initial import

File size: 3.4 KB
Line 
1
2#ifdef LIBREPLACE_CONFIGURE_TEST_STRPTIME
3
4#include <stdio.h>
5#include <stdlib.h>
6#include <time.h>
7
8#define true 1
9#define false 0
10
11#ifndef __STRING
12#define __STRING(x) #x
13#endif
14
15/* make printf a no-op */
16#define printf if(0) printf
17
18#else /* LIBREPLACE_CONFIGURE_TEST_STRPTIME */
19
20#include "replace.h"
21#include "system/time.h"
22
23#endif /* LIBREPLACE_CONFIGURE_TEST_STRPTIME */
24
25int libreplace_test_strptime(void)
26{
27 const char *s = "20070414101546Z";
28 char *ret;
29 struct tm t, t2;
30
31 memset(&t, 0, sizeof(t));
32 memset(&t2, 0, sizeof(t2));
33
34 printf("test: strptime\n");
35
36 ret = strptime(s, "%Y%m%d%H%M%S", &t);
37 if ( ret == NULL ) {
38 printf("failure: strptime [\n"
39 "returned NULL\n"
40 "]\n");
41 return false;
42 }
43
44 if ( *ret != 'Z' ) {
45 printf("failure: strptime [\n"
46 "ret doesn't point to 'Z'\n"
47 "]\n");
48 return false;
49 }
50
51 ret = strptime(s, "%Y%m%d%H%M%SZ", &t2);
52 if ( ret == NULL ) {
53 printf("failure: strptime [\n"
54 "returned NULL with Z\n"
55 "]\n");
56 return false;
57 }
58
59 if ( *ret != '\0' ) {
60 printf("failure: strptime [\n"
61 "ret doesn't point to '\\0'\n"
62 "]\n");
63 return false;
64 }
65
66#define CMP_TM_ELEMENT(t1,t2,elem) \
67 if (t1.elem != t2.elem) { \
68 printf("failure: strptime [\n" \
69 "result differs if the format string has a 'Z' at the end\n" \
70 "element: %s %d != %d\n" \
71 "]\n", \
72 __STRING(elen), t1.elem, t2.elem); \
73 return false; \
74 }
75
76 CMP_TM_ELEMENT(t,t2,tm_sec);
77 CMP_TM_ELEMENT(t,t2,tm_min);
78 CMP_TM_ELEMENT(t,t2,tm_hour);
79 CMP_TM_ELEMENT(t,t2,tm_mday);
80 CMP_TM_ELEMENT(t,t2,tm_mon);
81 CMP_TM_ELEMENT(t,t2,tm_year);
82 CMP_TM_ELEMENT(t,t2,tm_wday);
83 CMP_TM_ELEMENT(t,t2,tm_yday);
84 CMP_TM_ELEMENT(t,t2,tm_isdst);
85
86 if (t.tm_sec != 46) {
87 printf("failure: strptime [\n"
88 "tm_sec: expected: 46, got: %d\n"
89 "]\n",
90 t.tm_sec);
91 return false;
92 }
93
94 if (t.tm_min != 15) {
95 printf("failure: strptime [\n"
96 "tm_min: expected: 15, got: %d\n"
97 "]\n",
98 t.tm_min);
99 return false;
100 }
101
102 if (t.tm_hour != 10) {
103 printf("failure: strptime [\n"
104 "tm_hour: expected: 10, got: %d\n"
105 "]\n",
106 t.tm_hour);
107 return false;
108 }
109
110 if (t.tm_mday != 14) {
111 printf("failure: strptime [\n"
112 "tm_mday: expected: 14, got: %d\n"
113 "]\n",
114 t.tm_mday);
115 return false;
116 }
117
118 if (t.tm_mon != 3) {
119 printf("failure: strptime [\n"
120 "tm_mon: expected: 3, got: %d\n"
121 "]\n",
122 t.tm_mon);
123 return false;
124 }
125
126 if (t.tm_year != 107) {
127 printf("failure: strptime [\n"
128 "tm_year: expected: 107, got: %d\n"
129 "]\n",
130 t.tm_year);
131 return false;
132 }
133
134 if (t.tm_wday != 6) { /* saturday */
135 printf("failure: strptime [\n"
136 "tm_wday: expected: 6, got: %d\n"
137 "]\n",
138 t.tm_wday);
139 return false;
140 }
141
142 if (t.tm_yday != 103) {
143 printf("failure: strptime [\n"
144 "tm_yday: expected: 103, got: %d\n"
145 "]\n",
146 t.tm_yday);
147 return false;
148 }
149
150 /* we don't test this as it depends on the host configuration
151 if (t.tm_isdst != 0) {
152 printf("failure: strptime [\n"
153 "tm_isdst: expected: 0, got: %d\n"
154 "]\n",
155 t.tm_isdst);
156 return false;
157 }*/
158
159 printf("success: strptime\n");
160
161 return true;
162}
163
164#ifdef LIBREPLACE_CONFIGURE_TEST_STRPTIME
165int main (void)
166{
167 int ret;
168 ret = libreplace_test_strptime();
169 if (ret == false) return 1;
170 return 0;
171}
172#endif
Note: See TracBrowser for help on using the repository browser.