]> git.mxchange.org Git - quix0rs-gnu-social.git/blob - extlib/Date/tests/test_format.php
[PEAR] Modernize Validate code
[quix0rs-gnu-social.git] / extlib / Date / tests / test_format.php
1 <?php
2 /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
3
4 /**
5  * Tests for the Date::formatLikeStrftime(), Date::formatLikeSQL(),
6  * and Date::formatLikeDate()
7  *
8  * Any individual tests that fail will have their name, expected result
9  * and actual result printed out.  So seeing no output when executing
10  * this file is a good thing.
11  *
12  * Can be run via CLI or a web server.
13  *
14  * This test senses whether it is from an installation of PEAR::Date or if
15  * it's from CVS or a .tar file.  If it's an installed version, use the
16  * installed version of Date.  Otherwise, use the local development
17  * copy of Date.
18  *
19  * PHP versions 4 and 5
20  *
21  * LICENSE:
22  *
23  * Copyright (c) 2007 C.A. Woodcock <c01234@netcomuk.co.uk>
24  * All rights reserved.
25  *
26  * This source file is subject to the New BSD license that is bundled
27  * with this package in the file LICENSE.txt.
28  * It is also available through the world-wide-web at this URL:
29  * http://www.opensource.org/licenses/bsd-license.php
30  * If you did not receive a copy of the license and are unable to
31  * obtain it through the world-wide-web, please send an email
32  * to pear-dev@lists.php.net so we can send you a copy immediately.
33  *
34  * @category   Date and Time
35  * @package    Date
36  * @author     C.A. Woodcock <c01234@netcomuk.co.uk>
37  * @copyright  Copyright (c) 2007 C.A. Woodcock <c01234@netcomuk.co.uk>
38  * @license    http://www.opensource.org/licenses/bsd-license.php
39  *             BSD License
40  * @link       http://pear.php.net/package/Date
41  * @since      [next version]
42  */
43
44 if ('@include_path@' != '@' . 'include_path' . '@') {
45     ini_set(
46         'include_path',
47         ini_get('include_path')
48         . PATH_SEPARATOR . '.'
49     );
50 } else {
51     ini_set(
52         'include_path',
53         realpath(dirname(__FILE__) . '/../')
54         . PATH_SEPARATOR . '.' . PATH_SEPARATOR
55         . ini_get('include_path')
56     );
57 }
58
59 /**
60  * Get the needed class
61  */
62 require_once 'Date.php';
63
64 /**
65  * Compare the test result to the expected result
66  *
67  * If the test fails, echo out the results.
68  *
69  * @param mixed $expect the scalar or array you expect from the test
70  * @param mixed $actual the scalar or array results from the test
71  * @param string $test_name the name of the test
72  *
73  * @return void
74  */
75 function compare($expect, $actual, $test_name)
76 {
77     if (is_array($expect)) {
78         if (count(array_diff($actual, $expect))) {
79             echo "$test_name failed.  Expect:\n";
80             print_r($expect);
81             echo "Actual:\n";
82             print_r($actual);
83         }
84     } else {
85         if ($expect !== $actual) {
86             echo "'$test_name' failed.  Expect: '$expect'  Actual: '$actual'\n";
87         }
88     }
89 }
90
91 if (php_sapi_name() != 'cli') {
92     echo "<pre>\n";
93 }
94
95 $date = new Date("2007-11-29T23:13:46.09002");
96 $date->setTZbyID("Europe/Amsterdam");
97
98 compare('Thu', $date->formatLikeStrftime('%a'), '%a');
99 compare('Thursday', $date->formatLikeStrftime('%A'), '%A');
100 compare('Nov', $date->formatLikeStrftime('%b'), '%b');
101 compare('November', $date->formatLikeStrftime('%B'), '%B');
102 compare('20', $date->formatLikeStrftime('%C'), '%C');
103 compare('29', $date->formatLikeStrftime('%d'), '%d');
104 compare('11/29/2007', $date->formatLikeStrftime('%D'), '%D');
105 compare('29', $date->formatLikeStrftime('%e'), '%e');
106 compare('2454434', $date->formatLikeStrftime('%E'), '%E');
107 compare('07', $date->formatLikeStrftime('%g'), '%g');
108 compare('2007', $date->formatLikeStrftime('%G'), '%G');
109 compare('23', $date->formatLikeStrftime('%h'), '%h');
110 compare('23', $date->formatLikeStrftime('%H'), '%H');
111 compare('11', $date->formatLikeStrftime('%i'), '%i');
112 compare('11', $date->formatLikeStrftime('%I'), '%I');
113 compare('333', $date->formatLikeStrftime('%j'), '%j');
114 compare('11', $date->formatLikeStrftime('%m'), '%m');
115 compare('13', $date->formatLikeStrftime('%M'), '%M');
116 compare("\n", $date->formatLikeStrftime('%n'), '%n');
117 compare('+01:00', $date->formatLikeStrftime('%o'), '%o');
118 compare('+01:00', $date->formatLikeStrftime('%O'), '%O');
119 compare('pm', $date->formatLikeStrftime('%p'), '%p');
120 compare('PM', $date->formatLikeStrftime('%P'), '%P');
121 compare('11:13:46 PM', $date->formatLikeStrftime('%r'), '%r');
122 compare('23:13', $date->formatLikeStrftime('%R'), '%R');
123 compare('46.090020', $date->formatLikeStrftime('%s'), '%s');
124 compare('46', $date->formatLikeStrftime('%S'), '%S');
125 compare("\t", $date->formatLikeStrftime('%t'), '%t');
126 compare('23:13:46', $date->formatLikeStrftime('%T'), '%T');
127 compare('4', $date->formatLikeStrftime('%u'), '%u');
128 compare('47', $date->formatLikeStrftime('%U'), '%U');
129 compare('48', $date->formatLikeStrftime('%V'), '%V');
130 compare('4', $date->formatLikeStrftime('%w'), '%w');
131 compare('48', $date->formatLikeStrftime('%W'), '%W');
132 compare('07', $date->formatLikeStrftime('%y'), '%y');
133 compare('2007', $date->formatLikeStrftime('%Y'), '%Y');
134 compare('CET', $date->formatLikeStrftime('%Z'), '%Z');
135 compare('%', $date->formatLikeStrftime('%%'), '%%');
136
137 // Invalid character:
138 //
139 compare('x', $date->formatLikeStrftime('x'), 'x');
140
141 compare(' �!�$%^&*()_+{}:@~<>?[];\'#,./-=`\\|', $date->formatLikeSQL(' �!�$%^&*()_+{}:@~<>?[];\'#,./-=`\\|'), ' �!�$%^&*()_+{}:@~<>?[];\'#,./-=`\\|');
142
143 compare('text "   \\', $date->formatLikeSQL('"text \"   \\\\"'), '"text \"   \\\\"');
144
145 compare('AD', $date->formatLikeSQL('AD'), 'AD');
146 compare('A.D.', $date->formatLikeSQL('A.D.'), 'A.D.');
147 compare('ad', $date->formatLikeSQL('ad'), 'ad');
148 compare('a.d.', $date->formatLikeSQL('a.d.'), 'a.d.');
149
150 compare('PM', $date->formatLikeSQL('AM'), 'AM');
151 compare('P.M.', $date->formatLikeSQL('A.M.'), 'A.M.');
152 compare('pm', $date->formatLikeSQL('am'), 'am');
153 compare('p.m.', $date->formatLikeSQL('a.m.'), 'a.m.');
154
155 compare('AD', $date->formatLikeSQL('BC'), 'BC');
156 compare('A.D.', $date->formatLikeSQL('B.C.'), 'B.C.');
157 compare('ad', $date->formatLikeSQL('bc'), 'bc');
158 compare('a.d.', $date->formatLikeSQL('b.c.'), 'b.c.');
159
160 compare('0', $date->formatLikeSQL('C'), 'C');
161 compare('20', $date->formatLikeSQL('CC'), 'CC');
162 compare('020', $date->formatLikeSQL('CCC'), 'CCC');
163 compare('0020', $date->formatLikeSQL('CCCC'), 'CCCC');
164 compare(' 0', $date->formatLikeSQL('SC'), 'SC');
165 compare(' 20', $date->formatLikeSQL('SCC'), 'SCC');
166 compare(' 020', $date->formatLikeSQL('SCCC'), 'SCCC');
167 compare(' 0020', $date->formatLikeSQL('SCCCC'), 'SCCCC');
168 compare('0', $date->formatLikeSQL('NPC'), 'NPC');
169 compare('20', $date->formatLikeSQL('NPCC'), 'NPCC');
170 compare('20', $date->formatLikeSQL('NPCCC'), 'NPCCC');
171 compare('20', $date->formatLikeSQL('NPCCCC'), 'NPCCCC');
172 compare('0', $date->formatLikeSQL('NPSC'), 'NPSC');
173 compare('20', $date->formatLikeSQL('NPSCC'), 'NPSCC');
174 compare('20', $date->formatLikeSQL('NPSCCC'), 'NPSCCC');
175 compare('20', $date->formatLikeSQL('NPSCCCC'), 'NPSCCCC');
176
177 compare('CE ', $date->formatLikeSQL('BCE'), 'BCE');
178 compare('C.E.  ', $date->formatLikeSQL('B.C.E.'), 'B.C.E.');
179 compare('ce ', $date->formatLikeSQL('bce'), 'bce');
180 compare('c.e.  ', $date->formatLikeSQL('b.c.e.'), 'b.c.e.');
181 compare('CE', $date->formatLikeSQL('NPBCE'), 'NPBCE');
182 compare('C.E.', $date->formatLikeSQL('NPB.C.E.'), 'NPB.C.E.');
183 compare('ce', $date->formatLikeSQL('NPbce'), 'NPbce');
184 compare('c.e.', $date->formatLikeSQL('NPb.c.e.'), 'NPb.c.e.');
185
186 compare('4', $date->formatLikeSQL('D'), 'D');
187 compare('4TH', $date->formatLikeSQL('DTH'), 'DTH');
188 compare('4th', $date->formatLikeSQL('Dth'), 'Dth');
189 compare('FOUR', $date->formatLikeSQL('DSP'), 'DSP');
190 compare('FOURTH', $date->formatLikeSQL('DSPTH'), 'DSPTH');
191 compare('FOURTH', $date->formatLikeSQL('DTHSP'), 'DTHSP');
192 compare('four', $date->formatLikeSQL('Dsp'), 'Dsp');
193 compare('fourth', $date->formatLikeSQL('Dspth'), 'Dspth');
194 compare('fourth', $date->formatLikeSQL('Dthsp'), 'Dthsp');
195
196 compare('THURSDAY ', $date->formatLikeSQL('DAY'), 'DAY');
197 compare('Thursday ', $date->formatLikeSQL('Day'), 'Day');
198 compare('thursday ', $date->formatLikeSQL('day'), 'day');
199 compare('THURSDAY', $date->formatLikeSQL('NPDAY'), 'NPDAY');
200 compare('Thursday', $date->formatLikeSQL('NPDay'), 'NPDay');
201 compare('thursday', $date->formatLikeSQL('NPday'), 'NPday');
202
203 compare('29', $date->formatLikeSQL('DD'), 'DD');
204 compare('29TH', $date->formatLikeSQL('DDTH'), 'DDTH');
205 compare('29th', $date->formatLikeSQL('DDth'), 'DDth');
206 compare('TWENTY-NINE', $date->formatLikeSQL('DDSP'), 'DDSP');
207 compare('TWENTY-NINTH', $date->formatLikeSQL('DDSPTH'), 'DDSPTH');
208 compare('TWENTY-NINTH', $date->formatLikeSQL('DDTHSP'), 'DDTHSP');
209 compare('twenty-nine', $date->formatLikeSQL('DDsp'), 'DDsp');
210 compare('twenty-ninth', $date->formatLikeSQL('DDspth'), 'DDspth');
211 compare('twenty-ninth', $date->formatLikeSQL('DDthsp'), 'DDthsp');
212
213 compare('333', $date->formatLikeSQL('DDD'), 'DDD');
214 compare('333RD', $date->formatLikeSQL('DDDTH'), 'DDDTH');
215 compare('333rd', $date->formatLikeSQL('DDDth'), 'DDDth');
216 compare('THREE HUNDRED THIRTY-THREE', $date->formatLikeSQL('DDDSP'), 'DDDSP');
217 compare('THREE HUNDRED THIRTY-THIRD', $date->formatLikeSQL('DDDSPTH'), 'DDDSPTH');
218 compare('THREE HUNDRED THIRTY-THIRD', $date->formatLikeSQL('DDDTHSP'), 'DDDTHSP');
219 compare('three hundred thirty-three', $date->formatLikeSQL('DDDsp'), 'DDDsp');
220 compare('three hundred thirty-third', $date->formatLikeSQL('DDDspth'), 'DDDspth');
221 compare('three hundred thirty-third', $date->formatLikeSQL('DDDthsp'), 'DDDthsp');
222
223 compare('THU', $date->formatLikeSQL('DY'), 'DY');
224 compare('Thu', $date->formatLikeSQL('Dy'), 'Dy');
225 compare('thu', $date->formatLikeSQL('dy'), 'dy');
226
227 compare('0', $date->formatLikeSQL('F'), 'F');
228 compare('09', $date->formatLikeSQL('FF'), 'FF');
229 compare('090', $date->formatLikeSQL('FFF'), 'FFF');
230 compare('0900', $date->formatLikeSQL('FFFF'), 'FFFF');
231 compare('09002', $date->formatLikeSQL('FFFFF'), 'FFFFF');
232 compare('090020', $date->formatLikeSQL('FFFFFF'), 'FFFFFF');
233 compare('0900200', $date->formatLikeSQL('FFFFFFF'), 'FFFFFFF');
234 compare('09002000', $date->formatLikeSQL('FFFFFFFF'), 'FFFFFFFF');
235 compare('090020000', $date->formatLikeSQL('FFFFFFFFF'), 'FFFFFFFFF');
236 compare('0900200000', $date->formatLikeSQL('FFFFFFFFFF'), 'FFFFFFFFFF');
237 compare('0', $date->formatLikeSQL('F1'), 'F1');
238 compare('09', $date->formatLikeSQL('F2'), 'F2');
239 compare('090', $date->formatLikeSQL('F3'), 'F3');
240 compare('0900', $date->formatLikeSQL('F4'), 'F4');
241 compare('09002', $date->formatLikeSQL('F5'), 'F5');
242 compare('090020', $date->formatLikeSQL('F6'), 'F6');
243 compare('0900200', $date->formatLikeSQL('F7'), 'F7');
244 compare('09002000', $date->formatLikeSQL('F8'), 'F8');
245 compare('090020000', $date->formatLikeSQL('F9'), 'F9');
246 compare('0900200000', $date->formatLikeSQL('F10'), 'F10');
247 compare('09002000000', $date->formatLikeSQL('F11'), 'F11');
248 compare('090020000000', $date->formatLikeSQL('F12'), 'F12');
249 compare('0900200000000', $date->formatLikeSQL('F13'), 'F13');
250 compare('09002000000000', $date->formatLikeSQL('F14'), 'F14');
251 compare('09002' . str_repeat("0", 39), $date->formatLikeSQL('F44'), 'F44');
252
253 compare('23', $date->formatLikeSQL('HH'), 'HH');
254 compare('11', $date->formatLikeSQL('HH12'), 'HH12');
255 compare('23', $date->formatLikeSQL('HH24'), 'HH24');
256
257 compare('4', $date->formatLikeSQL('ID'), 'ID');
258
259 compare('48', $date->formatLikeSQL('IW'), 'IW');
260
261 compare('7', $date->formatLikeSQL('I'), 'I');
262 compare('07', $date->formatLikeSQL('IY'), 'IY');
263 compare('007', $date->formatLikeSQL('IYY'), 'IYY');
264 compare('2007', $date->formatLikeSQL('IYYY'), 'IYYY');
265 compare('02007', $date->formatLikeSQL('IYYYY'), 'IYYYY');
266 compare('002007', $date->formatLikeSQL('IYYYYY'), 'IYYYYY');
267 compare('7', $date->formatLikeSQL('NPSI'), 'NPSI');
268 compare('7', $date->formatLikeSQL('NPSIY'), 'NPSIY');
269 compare('7', $date->formatLikeSQL('NPSIYY'), 'NPSIYY');
270 compare('2007', $date->formatLikeSQL('NPSIYYY'), 'NPSIYYY');
271 compare('2007', $date->formatLikeSQL('NPSIYYYY'), 'NPSIYYYY');
272 compare('2007', $date->formatLikeSQL('NPSIYYYYY'), 'NPSIYYYYY');
273 compare(' 7', $date->formatLikeSQL('SI'), 'SI');
274 compare(' 07', $date->formatLikeSQL('SIY'), 'SIY');
275 compare(' 007', $date->formatLikeSQL('SIYY'), 'SIYY');
276 compare(' 2007', $date->formatLikeSQL('SIYYY'), 'SIYYY');
277 compare(' 02007', $date->formatLikeSQL('SIYYYY'), 'SIYYYY');
278 compare(' 002007', $date->formatLikeSQL('SIYYYYY'), 'SIYYYYY');
279 compare('7', $date->formatLikeSQL('NPIYY'), 'NPIYY');
280 compare('2007', $date->formatLikeSQL('NPIYYYYY'), 'NPIYYYYY');
281 compare('TWO THOUSAND SEVEN', $date->formatLikeSQL('NPIYYYYYSP'), 'NPIYYYYYSP');
282 compare('two thousand seventh', $date->formatLikeSQL('NPIYYYYYTHsp'), 'NPIYYYYYTHsp');
283
284 compare('2454434', $date->formatLikeSQL('J'), 'J');
285 compare('Two Million Four Hundred Fifty-four Thousand Four Hundred Thirty-four', $date->formatLikeSQL('JSp'), 'JSp');
286 compare('Two Million Four Hundred Fifty-four Thousand Four Hundred Thirty-fourth', $date->formatLikeSQL('JSpth'), 'JSpth');
287
288 compare('13', $date->formatLikeSQL('MI'), 'MI');
289 compare('thirteen', $date->formatLikeSQL('MIsP'), 'MIsP');
290 compare('13th', $date->formatLikeSQL('MItH'), 'MItH');
291 compare('13TH', $date->formatLikeSQL('MITh'), 'MITh');
292 compare('thirteenth', $date->formatLikeSQL('MIsPTH'), 'MIsPTH');
293 compare('Thirteenth', $date->formatLikeSQL('MISpth'), 'MISpth');
294 compare('THIRTEENTH', $date->formatLikeSQL('MISPth'), 'MISPth');
295
296 compare('11', $date->formatLikeSQL('MM'), 'MM');
297 compare('11', $date->formatLikeSQL('MM'), 'MM');
298 compare('ELEVEN', $date->formatLikeSQL('MMSP'), 'MMSP');
299 compare('ELEVENTH', $date->formatLikeSQL('MMSPTH'), 'MMSPTH');
300 compare('ELEVENTH', $date->formatLikeSQL('MMTHSP'), 'MMTHSP');
301 compare('Eleven', $date->formatLikeSQL('MMSp'), 'MMSp');
302 compare('Eleventh', $date->formatLikeSQL('MMSpTH'), 'MMSpTH');
303 compare('Eleventh', $date->formatLikeSQL('MMTHSp'), 'MMTHSp');
304 compare('eleven', $date->formatLikeSQL('MMsp'), 'MMsp');
305 compare('eleventh', $date->formatLikeSQL('MMspTH'), 'MMspTH');
306 compare('eleventh', $date->formatLikeSQL('MMTHsp'), 'MMTHsp');
307
308 compare('NOV', $date->formatLikeSQL('MON'), 'MON');
309 compare('Nov', $date->formatLikeSQL('Mon'), 'Mon');
310 compare('nov', $date->formatLikeSQL('mon'), 'mon');
311
312 compare('NOVEMBER ', $date->formatLikeSQL('MONTH'), 'MONTH');
313 compare('November ', $date->formatLikeSQL('Month'), 'Month');
314 compare('november ', $date->formatLikeSQL('month'), 'month');
315 compare('NOVEMBER', $date->formatLikeSQL('NPMONTH'), 'NPMONTH');
316 compare('November', $date->formatLikeSQL('NPMonth'), 'NPMonth');
317 compare('november', $date->formatLikeSQL('NPmonth'), 'NPmonth');
318
319 compare('PM', $date->formatLikeSQL('PM'), 'PM');
320 compare('P.M.', $date->formatLikeSQL('P.M.'), 'P.M.');
321 compare('pm', $date->formatLikeSQL('pm'), 'pm');
322 compare('p.m.', $date->formatLikeSQL('p.m.'), 'p.m.');
323
324 compare('4', $date->formatLikeSQL('Q'), 'Q');
325 compare('FOUR', $date->formatLikeSQL('QSP'), 'QSP');
326 compare('fourth', $date->formatLikeSQL('QTHsp'), 'QTHsp');
327
328 compare('  xi', $date->formatLikeSQL('rm'), 'rm');
329 compare('  XI', $date->formatLikeSQL('RM'), 'RM');
330 compare('xi', $date->formatLikeSQL('NPrm'), 'NPrm');
331 compare('XI', $date->formatLikeSQL('NPRM'), 'NPRM');
332
333 compare('46', $date->formatLikeSQL('SS'), 'SS');
334
335 compare('83626', $date->formatLikeSQL('SSSSS'), 'SSSSS');
336
337 compare('CET', $date->formatLikeSQL('TZC'), 'TZC');
338 compare('01', $date->formatLikeSQL('TZH'), 'TZH');
339 compare('+01', $date->formatLikeSQL('STZH'), 'STZH');
340 compare('1', $date->formatLikeSQL('NPTZH'), 'NPTZH');
341 compare('+1', $date->formatLikeSQL('NPSTZH'), 'NPSTZH');
342 compare('+One', $date->formatLikeSQL('NPSTZHSp'), 'NPSTZHSp');
343 compare('+First', $date->formatLikeSQL('NPSTZHSpth'), 'NPSTZHSpth');
344 compare('0', $date->formatLikeSQL('TZI'), 'TZI');
345 compare('00', $date->formatLikeSQL('TZM'), 'TZM');
346 compare('0', $date->formatLikeSQL('NPTZM'), 'NPTZM');
347 compare('Central European Time', $date->formatLikeSQL('TZN'), 'TZN');
348 compare('+01:00', $date->formatLikeSQL('TZO'), 'TZO');
349 compare('+01:00', $date->formatLikeSQL('NPTZO'), 'NPTZO');
350 compare('03600', $date->formatLikeSQL('TZS'), 'TZS');
351 compare(' 03600', $date->formatLikeSQL('STZS'), 'STZS');
352 compare('3600', $date->formatLikeSQL('NPTZS'), 'NPTZS');
353 compare('3600', $date->formatLikeSQL('NPSTZS'), 'NPSTZS');
354 compare('THREE THOUSAND SIX HUNDRED', $date->formatLikeSQL('TZSSP'), 'TZSSP');
355 compare('THREE THOUSAND SIX HUNDRED', $date->formatLikeSQL('NPSTZSSP'), 'NPSTZSSP');
356 compare('Europe/Amsterdam', $date->formatLikeSQL('TZR'), 'TZR');
357
358 $date2 = new Date($date);
359 $date2->setTZbyID("America/Chicago");
360
361 compare('CST', $date2->formatLikeSQL('TZC'), 'TZC (2)');
362 compare('06', $date2->formatLikeSQL('TZH'), 'TZH (2)');
363 compare('-06', $date2->formatLikeSQL('STZH'), 'STZH (2)');
364 compare('6', $date2->formatLikeSQL('NPTZH'), 'NPTZH (2)');
365 compare('-6', $date2->formatLikeSQL('NPSTZH'), 'NPSTZH (2)');
366 compare('-six', $date2->formatLikeSQL('NPSTZHsp'), 'NPSTZHsp (2)');
367 compare('-sixth', $date2->formatLikeSQL('NPSTZHspth'), 'NPSTZHspth (2)');
368 compare('0', $date2->formatLikeSQL('TZI'), 'TZI (2)');
369 compare('00', $date2->formatLikeSQL('TZM'), 'TZM (2)');
370 compare('0', $date2->formatLikeSQL('NPTZM'), 'NPTZM (2)');
371 compare('Central Standard Time', $date2->formatLikeSQL('TZN'), 'TZN (2)');
372 compare('-06:00', $date2->formatLikeSQL('TZO'), 'TZO (2)');
373 compare('-06:00', $date2->formatLikeSQL('NPTZO'), 'NPTZO (2)');
374 compare('21600', $date2->formatLikeSQL('TZS'), 'TZS (2)');
375 compare('-21600', $date2->formatLikeSQL('STZS'), 'STZS (2)');
376 compare('21600', $date2->formatLikeSQL('NPTZS'), 'NPTZS (2)');
377 compare('-21600', $date2->formatLikeSQL('NPSTZS'), 'NPSTZS (2)');
378 compare('TWENTY-ONE THOUSAND SIX HUNDRED', $date2->formatLikeSQL('TZSSP'), 'TZSSP (2)');
379 compare('MINUS TWENTY-ONE THOUSAND SIX HUNDRED', $date2->formatLikeSQL('NPSTZSSP'), 'NPSTZSSP (2)');
380 compare('America/Chicago', $date2->formatLikeSQL('TZR'), 'TZR (2)');
381
382 $date3 = new Date($date);
383 $date3->setTZbyID("UTC");
384
385 compare('UTC', $date3->formatLikeSQL('TZC'), 'TZC (formatLikeDate)');
386 compare('00', $date3->formatLikeSQL('TZH'), 'TZH (formatLikeDate)');
387 compare('+00', $date3->formatLikeSQL('STZH'), 'STZH (formatLikeDate)');
388 compare('0', $date3->formatLikeSQL('NPTZH'), 'NPTZH (formatLikeDate)');
389 compare('+0', $date3->formatLikeSQL('NPSTZH'), 'NPSTZH (formatLikeDate)');
390 compare('ZERO', $date3->formatLikeSQL('NPTZHSP'), 'NPTZHSP (formatLikeDate)');
391 compare('+ZEROTH', $date3->formatLikeSQL('NPSTZHSPTH'), 'NPSTZHSPTH (formatLikeDate)');
392 compare('0', $date3->formatLikeSQL('TZI'), 'TZI (formatLikeDate)');
393 compare('00', $date3->formatLikeSQL('TZM'), 'TZM (formatLikeDate)');
394 compare('0', $date3->formatLikeSQL('NPTZM'), 'NPTZM (formatLikeDate)');
395 compare('Coordinated Universal Time', $date3->formatLikeSQL('TZN'), 'TZN (formatLikeDate)');
396 compare('00000', $date3->formatLikeSQL('TZS'), 'TZS (formatLikeDate)');
397 compare(' 00000', $date3->formatLikeSQL('STZS'), 'STZS (formatLikeDate)');
398 compare('0', $date3->formatLikeSQL('NPTZS'), 'NPTZS (formatLikeDate)');
399 compare('0', $date3->formatLikeSQL('NPSTZS'), 'NPSTZS (formatLikeDate)');
400 compare('zero', $date3->formatLikeSQL('TZSsp'), 'NPSTZSsp (formatLikeDate)');
401 compare('Zero', $date3->formatLikeSQL('NPSTZSSp'), 'NPSTZSSp (formatLikeDate)');
402 compare('Z     ', $date3->formatLikeSQL('TZO'), 'TZO (formatLikeDate)');
403 compare('Z', $date3->formatLikeSQL('NPTZO'), 'NPTZO (formatLikeDate)');
404 compare('UTC', $date3->formatLikeSQL('TZR'), 'TZR (formatLikeDate)');
405
406 compare('1196374426', $date->formatLikeSQL('U'), 'U');
407
408 compare('5', $date->formatLikeSQL('W'), 'W');
409 compare('5', $date->formatLikeSQL('W'), 'W');
410
411 // N.B. For 2007 all the week numbers match because the
412 // year starts on a Monday:
413 //
414 compare('48', $date->formatLikeSQL('W1'), 'W1');
415 compare('48', $date->formatLikeSQL('NPW1'), 'W1');
416
417 compare('48', $date->formatLikeSQL('W4'), 'W4');
418 compare('48', $date->formatLikeSQL('NPW4'), 'W4');
419
420 compare('48', $date->formatLikeSQL('W7'), 'W7');
421 compare('48', $date->formatLikeSQL('NPW7'), 'W7');
422
423 compare('48', $date->formatLikeSQL('WW'), 'WW');
424 compare('48', $date->formatLikeSQL('NPWW'), 'WW');
425
426 compare('TWO THOUSAND SEVEN', $date->formatLikeSQL('YEAR'), 'YEAR');
427 compare('Two Thousand Seven', $date->formatLikeSQL('Year'), 'Year');
428 compare('two thousand seven', $date->formatLikeSQL('year'), 'year');
429 compare('TWO THOUSAND SEVEN', $date->formatLikeSQL('NPSYEAR'), 'NPSYEAR');
430 compare('TWO THOUSAND SEVEN', $date->formatLikeSQL('NPSYEAR'), 'NPSYEAR');
431
432 compare('7', $date->formatLikeSQL('Y'), 'Y');
433 compare('07', $date->formatLikeSQL('YY'), 'YY');
434 compare('007', $date->formatLikeSQL('YYY'), 'YYY');
435 compare('2007', $date->formatLikeSQL('YYYY'), 'YYYY');
436 compare('02007', $date->formatLikeSQL('YYYYY'), 'YYYYY');
437 compare('002007', $date->formatLikeSQL('YYYYYY'), 'YYYYYY');
438 compare(' 7', $date->formatLikeSQL('SY'), 'SY');
439 compare(' 07', $date->formatLikeSQL('SYY'), 'SYY');
440 compare(' 007', $date->formatLikeSQL('SYYY'), 'SYYY');
441 compare(' 2007', $date->formatLikeSQL('SYYYY'), 'SYYYY');
442 compare(' 02007', $date->formatLikeSQL('SYYYYY'), 'SYYYYY');
443 compare(' 002007', $date->formatLikeSQL('SYYYYYY'), 'SYYYYYY');
444 compare('7', $date->formatLikeSQL('NPSY'), 'NPSY');
445 compare('7', $date->formatLikeSQL('NPSYY'), 'NPSYY');
446 compare('7', $date->formatLikeSQL('NPSYYY'), 'NPSYYY');
447 compare('2007', $date->formatLikeSQL('NPSYYYY'), 'NPSYYYY');
448 compare('2007', $date->formatLikeSQL('NPSYYYYY'), 'NPSYYYYY');
449 compare('2007', $date->formatLikeSQL('NPSYYYYYY'), 'NPSYYYYYY');
450 compare('TWO THOUSAND SEVEN', $date->formatLikeSQL('NPSYYYYYYSP'), 'NPSYYYYYYSP');
451 compare('Two Thousand Seven', $date->formatLikeSQL('NPSYYYYYYSp'), 'NPSYYYYYYSp');
452 compare('two thousand seven', $date->formatLikeSQL('NPSYYYYYYsp'), 'NPSYYYYYYsp');
453 compare('TWO THOUSAND SEVENTH', $date->formatLikeSQL('NPSYYYYYYSPth'), 'NPSYYYYYYSPth');
454 compare('Two Thousand Seventh', $date->formatLikeSQL('NPSYYYYYYSpth'), 'NPSYYYYYYSpth');
455 compare('two thousand seventh', $date->formatLikeSQL('NPSYYYYYYthsp'), 'NPSYYYYYYthsp');
456 compare('2007th', $date->formatLikeSQL('NPSYYYYYYth'), 'NPSYYYYYYth');
457 compare('2007TH', $date->formatLikeSQL('NPSYYYYYYTH'), 'NPSYYYYYYTH');
458
459 compare('7', $date->formatLikeSQL('Y'), 'Y');
460 compare('07', $date->formatLikeSQL('YY'), 'YY');
461 compare('007', $date->formatLikeSQL('YYY'), 'YYY');
462 compare('2,007', $date->formatLikeSQL('Y,YYY'), 'Y,YYY');
463 compare('02.007', $date->formatLikeSQL('YY.YYY'), 'YY.YYY');
464 compare('002�007', $date->formatLikeSQL('YYY�YYY'), 'YYY�YYY');
465 compare(' 7', $date->formatLikeSQL('SY'), 'SY');
466 compare(' 07', $date->formatLikeSQL('SYY'), 'SYY');
467 compare(' 007', $date->formatLikeSQL('SYYY'), 'SYYY');
468 compare(' 2\'007', $date->formatLikeSQL('SY\'YYY'), 'SY\'YYY');
469 compare(' 02 007', $date->formatLikeSQL('SYY YYY'), 'SYY YYY');
470
471 // The semi-colon (':') is an invalid separator:
472 //
473 compare(' 007:007', $date->formatLikeSQL('SYYY:YYY'), 'SYYY:YYY');
474 compare('2,007', $date->formatLikeSQL('NPSYYY,YYY,YYY'), 'NPSYYY,YYY,YYY');
475
476 compare('29', $date->formatLikeDate('d'), 'd (formatLikeDate)');
477 compare('Thu', $date->formatLikeDate('D'), 'D (formatLikeDate)');
478 compare('29', $date->formatLikeDate('j'), 'j (formatLikeDate)');
479 compare('Thursday', $date->formatLikeDate('l'), 'l (formatLikeDate)');
480 compare('4', $date->formatLikeDate('N'), 'N (formatLikeDate)');
481 compare('29th', $date->formatLikeDate('dS'), 'dS (formatLikeDate)');
482 compare('4', $date->formatLikeDate('w'), 'w (formatLikeDate)');
483 compare('332', $date->formatLikeDate('z'), 'z (formatLikeDate)');
484 compare('48', $date->formatLikeDate('W'), 'W (formatLikeDate)');
485 compare('November', $date->formatLikeDate('F'), 'F (formatLikeDate)');
486 compare('11', $date->formatLikeDate('m'), 'm (formatLikeDate)');
487 compare('Nov', $date->formatLikeDate('M'), 'M (formatLikeDate)');
488 compare('11', $date->formatLikeDate('n'), 'n (formatLikeDate)');
489 compare('30', $date->formatLikeDate('t'), 't (formatLikeDate)');
490 compare('0', $date->formatLikeDate('L'), 'L (formatLikeDate)');
491 compare('2007', $date->formatLikeDate('o'), 'o (formatLikeDate)');
492 compare('2007', $date->formatLikeDate('Y'), 'Y (formatLikeDate)');
493 compare('07', $date->formatLikeDate('y'), 'y (formatLikeDate)');
494 compare("pm", $date->formatLikeDate('a'), 'a (formatLikeDate)');
495 compare('PM', $date->formatLikeDate('A'), 'A (formatLikeDate)');
496 compare('11', $date->formatLikeDate('g'), 'g (formatLikeDate)');
497 compare('23', $date->formatLikeDate('G'), 'G (formatLikeDate)');
498 compare('11', $date->formatLikeDate('h'), 'h (formatLikeDate)');
499 compare('23', $date->formatLikeDate('H'), 'H (formatLikeDate)');
500 compare('13', $date->formatLikeDate('i'), 'i (formatLikeDate)');
501 compare('46', $date->formatLikeDate('s'), 's (formatLikeDate)');
502 compare('46090', $date->formatLikeDate('u'), 'u (formatLikeDate)');
503 compare("Europe/Amsterdam", $date->formatLikeDate('e'), 'e (formatLikeDate)');
504 compare('0', $date->formatLikeDate('I'), 'I (formatLikeDate)');
505 compare('+0100', $date->formatLikeDate('O'), 'O (formatLikeDate)');
506 compare('+01:00', $date->formatLikeDate('P'), 'P (formatLikeDate)');
507 compare('CET', $date->formatLikeDate('T'), 'T (formatLikeDate)');
508 compare('03600', $date->formatLikeDate('Z'), 'Z (formatLikeDate)');
509 compare('2007-11-29T23:13:46+01:00', $date->formatLikeDate('c'), 'c (formatLikeDate)');
510 compare('Thu, 29 Nov 2007 23:13:46 +0100', $date->formatLikeDate('r'), 'r (formatLikeDate)');
511 compare('1196374426', $date->formatLikeDate('U'), 'U (formatLikeDate)');
512 compare('text\\', $date->formatLikeDate('\t\e\x\t\\\\'), '\\t\\e\\x\\t\\\\ (formatLikeDate)');
513 compare('"', $date->formatLikeDate('"'), '" (formatLikeDate)');
514 compare(' ', $date->formatLikeDate(' '), 'blank space (formatLikeDate)');
515
516 compare('2007-11-29T23:13:46+01:00', $date->formatLikeDate(DATE_ATOM), 'DATE_ATOM [' . DATE_ATOM . '] (formatLikeDate)');
517 compare('Thursday, 29-Nov-07 23:13:46 CET', $date->formatLikeDate(DATE_COOKIE), 'DATE_COOKIE [' . DATE_COOKIE . '] (formatLikeDate)');
518 compare('2007-11-29T23:13:46+0100', $date->formatLikeDate(DATE_ISO8601), 'DATE_ISO8601 [' . DATE_ISO8601 . '] (formatLikeDate)');
519 compare('Thu, 29 Nov 07 23:13:46 +0100', $date->formatLikeDate(DATE_RFC822), 'DATE_RFC822 [' . DATE_RFC822 . '] (formatLikeDate)');
520 compare('Thursday, 29-Nov-07 23:13:46 CET', $date->formatLikeDate(DATE_RFC850), 'DATE_RFC850 [' . DATE_RFC850 . '] (formatLikeDate)');
521 compare('Thu, 29 Nov 07 23:13:46 +0100', $date->formatLikeDate(DATE_RFC1036), 'DATE_RFC1036 [' . DATE_RFC1036 . '] (formatLikeDate)');
522 compare('Thu, 29 Nov 2007 23:13:46 +0100', $date->formatLikeDate(DATE_RFC1123), 'DATE_RFC1123 [' . DATE_RFC1123 . '] (formatLikeDate)');
523 compare('Thu, 29 Nov 2007 23:13:46 +0100', $date->formatLikeDate(DATE_RFC2822), 'DATE_RFC2822 [' . DATE_RFC2822 . '] (formatLikeDate)');
524 compare('2007-11-29T23:13:46+01:00', $date->formatLikeDate(DATE_RFC3339), 'DATE_RFC3339 [' . DATE_RFC3339 . '] (formatLikeDate)');
525 compare('Thu, 29 Nov 2007 23:13:46 +0100', $date->formatLikeDate(DATE_RSS), 'DATE_RSS [' . DATE_RSS . '] (formatLikeDate)');
526 compare('2007-11-29T23:13:46+01:00', $date->formatLikeDate(DATE_W3C), 'DATE_W3C [' . DATE_W3C . '] (formatLikeDate)');