~zulcss/samba/server-dailies-3.4

« back to all changes in this revision

Viewing changes to lib/replace/test/strptime.c

  • Committer: Chuck Short
  • Date: 2010-09-28 20:38:39 UTC
  • Revision ID: zulcss@ubuntu.com-20100928203839-pgjulytsi9ue63x1
Initial version

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
 
 
25
int 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
 
165
int main (void)
 
166
{
 
167
        int ret;
 
168
        ret = libreplace_test_strptime();
 
169
        if (ret == false) return 1;
 
170
        return 0;
 
171
}
 
172
#endif