1 /*****************************************************************************/
2 /* Software Testing Automation Framework (STAF) */
3 /* (C) Copyright IBM Corp. 2001 */
4 /* */
5 /* This software is licensed under the Eclipse Public License (EPL) V1.0. */
6 /*****************************************************************************/
7
8 #include "STAF.h"
9 #include "STAF_iostream.h"
10 #include "STAFTimestamp.h"
11
main(void)12 int main(void)
13 {
14 STAFRelativeTime begin;
15
16 const char *data[] =
17 {
18 "20001031-09:27:16",
19 "10/31/00-09:27:16",
20 "10/31/2000-09:27:16",
21 "20001031-09:27",
22 "20001031-09",
23 "20001031-",
24 "20001031",
25 "-09:27:16",
26 "-09:27",
27 "-09",
28 "-",
29 "",
30 "10:11:12",
31 "20000229", // Begin errors
32 "20001131",
33 "19990229",
34 "20010229",
35 "06/29/69", // Non-obvious, 69 == 2069 which is > sizeof(time_t)
36 "-24:00:00",
37 "-10:70:00",
38 "-10:20:70",
39 "-1:00:00", // Must be 01:xx:yy
40 "-10:1:00",
41 "-10:01:1"
42 };
43
44 cout << "BEGIN STRING TESTS" << endl;
45
46 int i = 0;
47
48 for (i = 0; i < (sizeof(data) / sizeof(char *)); ++i)
49 {
50 try
51 {
52 cout << endl << "Test : " << data[i] << endl;
53
54 if (STAFTimestamp::isValidTimestampString(data[i]))
55 cout << "Valid : Yes" << endl;
56 else
57 cout << "Valid : No" << endl;
58
59 STAFTimestamp aTime(data[i]);
60
61 cout << "Formatted: " << aTime.asString() << endl;
62 }
63 catch (STAFException &se)
64 {
65 cout << "Caught exception: " << se.getName() << endl;
66 }
67 catch (...)
68 { cout << "Caught unknown exception in main()" << endl; }
69 }
70
71
72 unsigned int data2[][6] =
73 {
74 { 2000, 10, 31, 9 , 27, 16 },
75 { 99 , 10, 31, 9 , 27, 16 },
76 { 02 , 10, 31, 9 , 27, 16 },
77 { 102 , 10, 31, 9 , 27, 16 },
78 { 1999, 2 , 29, 9 , 27, 16 }, // Begin errors
79 { 2000, 2 , 29, 9 , 27, 16 },
80 { 2001, 2 , 29, 9 , 27, 16 },
81 { 69 , 6 , 29, 9 , 27, 16 }, // Again non-obvious
82 { 2000, 10, 31, 24, 27, 16 },
83 { 2000, 10, 31, 9 , 60, 16 },
84 { 2000, 10, 31, 9 , 27, 60 },
85 };
86
87 cout << endl << "BEGIN NUMERIC TESTS" << endl;
88
89 for (i = 0; i < (sizeof(data2) / sizeof(unsigned int [6])); ++i)
90 {
91 try
92 {
93 cout << endl << "Test : "
94 << data2[i][0] << ", " << data2[i][1] << ", "
95 << data2[i][2] << ", " << data2[i][3] << ", "
96 << data2[i][4] << ", " << data2[i][5] << endl;
97
98 if (STAFTimestamp::isValidTimestampData(data2[i][0], data2[i][1],
99 data2[i][2], data2[i][3],
100 data2[i][4], data2[i][5]))
101 {
102 cout << "Valid : Yes" << endl;
103 }
104 else
105 {
106 cout << "Valid : No" << endl;
107 }
108
109 STAFTimestamp aTime(data2[i][0], data2[i][1], data2[i][2],
110 data2[i][3], data2[i][4], data2[i][5]);
111
112 cout << "Formatted: " << aTime.asString() << endl;
113 }
114 catch (STAFException &se)
115 {
116 cout << "Caught exception: " << se.getName() << endl;
117 }
118 catch (...)
119 { cout << "Caught unknown exception in main()" << endl; }
120 }
121
122 const char *data3[] =
123 {
124 "20000101-00:00:00",
125 "19991231-23:59:59"
126 };
127
128 cout << endl << "BEGIN ACCESSOR TESTS" << endl;
129
130 for (i = 0; i < (sizeof(data3) / sizeof(char *)); ++i)
131 {
132 try
133 {
134 cout << endl << "Test : " << data3[i] << endl;
135
136 STAFTimestamp aTime(data3[i]);
137
138 cout << "Year : " << aTime.getYear() << endl;
139 cout << "Month : " << aTime.getMonth() << endl;
140 cout << "Day : " << aTime.getDay() << endl;
141 cout << "Hour : " << aTime.getHour() << endl;
142 cout << "Minute: " << aTime.getMinute() << endl;
143 cout << "Second: " << aTime.getSecond() << endl;
144 }
145 catch (STAFException &se)
146 {
147 cout << "Caught exception: " << se.getName() << endl;
148 }
149 catch (...)
150 { cout << "Caught unknown exception in main()" << endl; }
151 }
152
153
154 const char *data4[][2] =
155 {
156 { "20001108" , "20001109" },
157 { "20001108-10:11:12", "20001108-10:11:01" },
158 { "10:11:12" , "10:11:01" },
159 { "20001108-10:11:12", "20001108-10:11:12" },
160 { "19991231-23:59:59", "20000101-00:00:00" }
161 };
162
163 cout << endl << "BEGIN RELATIONAL TESTS" << endl;
164
165 for (i = 0; i < (sizeof(data4) / sizeof(char *[2])); ++i)
166 {
167 try
168 {
169 cout << endl << data4[i][0] << " == " << data4[i][1] << " : ";
170
171 if (STAFTimestamp(data4[i][0]) == STAFTimestamp(data4[i][1]))
172 cout << "Yes" << endl;
173 else
174 cout << "No" << endl;
175
176 cout << data4[i][0] << " != " << data4[i][1] << " : ";
177
178 if (STAFTimestamp(data4[i][0]) != STAFTimestamp(data4[i][1]))
179 cout << "Yes" << endl;
180 else
181 cout << "No" << endl;
182
183 cout << data4[i][0] << " < " << data4[i][1] << " : ";
184
185 if (STAFTimestamp(data4[i][0]) < STAFTimestamp(data4[i][1]))
186 cout << "Yes" << endl;
187 else
188 cout << "No" << endl;
189
190 cout << data4[i][0] << " <= " << data4[i][1] << " : ";
191
192 if (STAFTimestamp(data4[i][0]) <= STAFTimestamp(data4[i][1]))
193 cout << "Yes" << endl;
194 else
195 cout << "No" << endl;
196
197 cout << data4[i][0] << " > " << data4[i][1] << " : ";
198
199 if (STAFTimestamp(data4[i][0]) > STAFTimestamp(data4[i][1]))
200 cout << "Yes" << endl;
201 else
202 cout << "No" << endl;
203
204 cout << data4[i][0] << " >= " << data4[i][1] << " : ";
205
206 if (STAFTimestamp(data4[i][0]) >= STAFTimestamp(data4[i][1]))
207 cout << "Yes" << endl;
208 else
209 cout << "No" << endl;
210 }
211 catch (STAFException &se)
212 {
213 cout << "Caught exception: " << se.getName() << endl;
214 }
215 catch (...)
216 { cout << "Caught unknown exception in main()" << endl; }
217 }
218
219 STAFRelativeTime end;
220
221 cout << endl << "Runtime: " << ((end - begin) / 1000) << "."
222 << setw(3) << setfill('0') << ((end - begin) % 1000)
223 << " seconds" << endl;
224
225 return 0;
226 }
227