source: Dev/branches/rest-dojo-ui/client/dojo/tests/date.js @ 256

Last change on this file since 256 was 256, checked in by hendrikvanantwerpen, 13 years ago

Reworked project structure based on REST interaction and Dojo library. As
soon as this is stable, the old jQueryUI branch can be removed (it's
kept for reference).

File size: 20.7 KB
Line 
1define(["../main", "doh", "../date", "./date/locale", "./date/stamp"], function(dojo, doh){
2doh.register("tests.date.util", [
3
4/* Informational Functions
5 **************************/
6
7function test_date_getDaysInMonth(t){
8        // months other than February
9        t.is(31, dojo.date.getDaysInMonth(new Date(2006,0,1)));
10        t.is(31, dojo.date.getDaysInMonth(new Date(2006,2,1)));
11        t.is(30, dojo.date.getDaysInMonth(new Date(2006,3,1)));
12        t.is(31, dojo.date.getDaysInMonth(new Date(2006,4,1)));
13        t.is(30, dojo.date.getDaysInMonth(new Date(2006,5,1)));
14        t.is(31, dojo.date.getDaysInMonth(new Date(2006,6,1)));
15        t.is(31, dojo.date.getDaysInMonth(new Date(2006,7,1)));
16        t.is(30, dojo.date.getDaysInMonth(new Date(2006,8,1)));
17        t.is(31, dojo.date.getDaysInMonth(new Date(2006,9,1)));
18        t.is(30, dojo.date.getDaysInMonth(new Date(2006,10,1)));
19        t.is(31, dojo.date.getDaysInMonth(new Date(2006,11,1)));
20
21        // Februarys
22        t.is(28, dojo.date.getDaysInMonth(new Date(2006,1,1)));
23        t.is(29, dojo.date.getDaysInMonth(new Date(2004,1,1)));
24        t.is(29, dojo.date.getDaysInMonth(new Date(2000,1,1)));
25        t.is(28, dojo.date.getDaysInMonth(new Date(1900,1,1)));
26        t.is(28, dojo.date.getDaysInMonth(new Date(1800,1,1)));
27        t.is(28, dojo.date.getDaysInMonth(new Date(1700,1,1)));
28        t.is(29, dojo.date.getDaysInMonth(new Date(1600,1,1)));
29},
30
31function test_date_isLeapYear(t){
32        t.f(dojo.date.isLeapYear(new Date(2006,0,1)));
33        t.t(dojo.date.isLeapYear(new Date(2004,0,1)));
34        t.t(dojo.date.isLeapYear(new Date(2000,0,1)));
35        t.f(dojo.date.isLeapYear(new Date(1900,0,1)));
36        t.f(dojo.date.isLeapYear(new Date(1800,0,1)));
37        t.f(dojo.date.isLeapYear(new Date(1700,0,1)));
38        t.t(dojo.date.isLeapYear(new Date(1600,0,1)));
39},
40
41// The getTimezone function pulls from either the date's toString or
42// toLocaleString method -- it's really just a string-processing
43// function (assuming the Date obj passed in supporting both toString
44// and toLocaleString) and as such can be tested for multiple browsers
45// by manually settting up fake Date objects with the actual strings
46// produced by various browser/OS combinations.
47// FIXME: the function and tests are not localized.
48function test_date_getTimezoneName(t){
49
50        // Create a fake Date object with toString and toLocaleString
51        // results manually set to simulate tests for multiple browsers
52        function FakeDate(str, strLocale){
53                this.str = str || '';
54                this.strLocale = strLocale || '';
55                this.toString = function() {
56                        return this.str;
57                };
58                this.toLocaleString = function(){
59                        return this.strLocale;
60                };
61        }
62        var dt = new FakeDate();
63
64        // FF 1.5 Ubuntu Linux (Breezy)
65        dt.str = 'Sun Sep 17 2006 22:25:51 GMT-0500 (CDT)';
66        dt.strLocale = 'Sun 17 Sep 2006 10:25:51 PM CDT';
67        t.is('CDT', dojo.date.getTimezoneName(dt));
68
69        // Safari 2.0 Mac OS X 10.4
70        dt.str = 'Sun Sep 17 2006 22:55:01 GMT-0500';
71        dt.strLocale = 'September 17, 2006 10:55:01 PM CDT';
72        t.is('CDT', dojo.date.getTimezoneName(dt));
73
74        // FF 1.5 Mac OS X 10.4
75        dt.str = 'Sun Sep 17 2006 22:57:18 GMT-0500 (CDT)';
76        dt.strLocale = 'Sun Sep 17 22:57:18 2006';
77        t.is('CDT', dojo.date.getTimezoneName(dt));
78
79        // Opera 9 Mac OS X 10.4 -- no TZ data expect empty string return
80        dt.str = 'Sun, 17 Sep 2006 22:58:06 GMT-0500';
81        dt.strLocale = 'Sunday September 17, 22:58:06 GMT-0500 2006';
82        t.is('', dojo.date.getTimezoneName(dt));
83
84        // IE 6 Windows XP
85        dt.str = 'Mon Sep 18 11:21:07 CDT 2006';
86        dt.strLocale = 'Monday, September 18, 2006 11:21:07 AM';
87        t.is('CDT', dojo.date.getTimezoneName(dt));
88
89        // Opera 9 Ubuntu Linux (Breezy) -- no TZ data expect empty string return
90        dt.str = 'Mon, 18 Sep 2006 13:30:32 GMT-0500';
91        dt.strLocale = 'Monday September 18, 13:30:32 GMT-0500 2006';
92        t.is('', dojo.date.getTimezoneName(dt));
93
94        // IE 5.5 Windows 2000
95        dt.str = 'Mon Sep 18 13:49:22 CDT 2006';
96        dt.strLocale = 'Monday, September 18, 2006 1:49:22 PM';
97        t.is('CDT', dojo.date.getTimezoneName(dt));
98}
99        ]
100);
101
102doh.register("tests.date.math",
103        [
104function test_date_compare(t){
105        var d1=new Date();
106        d1.setHours(0);
107        var d2=new Date();
108        d2.setFullYear(2005);
109        d2.setHours(12);
110        t.is(0, dojo.date.compare(d1, d1));
111        t.is(1, dojo.date.compare(d1, d2, "date"));
112        t.is(-1, dojo.date.compare(d2, d1, "date"));
113        t.is(-1, dojo.date.compare(d1, d2, "time"));
114        t.is(1, dojo.date.compare(d1, d2, "datetime"));
115},
116function test_date_add(t){
117        var interv = ''; // Interval (e.g., year, month)
118        var dtA = null; // Date to increment
119        var dtB = null; // Expected result date
120
121        interv = "year";
122        dtA = new Date(2005, 11, 27);
123        dtB = new Date(2006, 11, 27);
124        t.is(dtB, dojo.date.add(dtA, interv, 1));
125
126        dtA = new Date(2005, 11, 27);
127        dtB = new Date(2004, 11, 27);
128        t.is(dtB, dojo.date.add(dtA, interv, -1));
129
130        dtA = new Date(2000, 1, 29);
131        dtB = new Date(2001, 1, 28);
132        t.is(dtB, dojo.date.add(dtA, interv, 1));
133
134        dtA = new Date(2000, 1, 29);
135        dtB = new Date(2005, 1, 28);
136        t.is(dtB, dojo.date.add(dtA, interv, 5));
137
138        dtA = new Date(1900, 11, 31);
139        dtB = new Date(1930, 11, 31);
140        t.is(dtB, dojo.date.add(dtA, interv, 30));
141
142        dtA = new Date(1995, 11, 31);
143        dtB = new Date(2030, 11, 31);
144        t.is(dtB, dojo.date.add(dtA, interv, 35));
145
146        interv = "quarter";
147        dtA = new Date(2000, 0, 1);
148        dtB = new Date(2000, 3, 1);
149        t.is(dtB, dojo.date.add(dtA, interv, 1));
150
151        dtA = new Date(2000, 1, 29);
152        dtB = new Date(2000, 7, 29);
153        t.is(dtB, dojo.date.add(dtA, interv, 2));
154
155        dtA = new Date(2000, 1, 29);
156        dtB = new Date(2001, 1, 28);
157        t.is(dtB, dojo.date.add(dtA, interv, 4));
158
159        interv = "month";
160        dtA = new Date(2000, 0, 1);
161        dtB = new Date(2000, 1, 1);
162        t.is(dtB, dojo.date.add(dtA, interv, 1));
163
164        dtA = new Date(2000, 0, 31);
165        dtB = new Date(2000, 1, 29);
166        t.is(dtB, dojo.date.add(dtA, interv, 1));
167
168        dtA = new Date(2000, 1, 29);
169        dtB = new Date(2001, 1, 28);
170        t.is(dtB, dojo.date.add(dtA, interv, 12));
171
172        interv = "week";
173        dtA = new Date(2000, 0, 1);
174        dtB = new Date(2000, 0, 8);
175        t.is(dtB, dojo.date.add(dtA, interv, 1));
176
177        interv = "day";
178        dtA = new Date(2000, 0, 1);
179        dtB = new Date(2000, 0, 2);
180        t.is(dtB, dojo.date.add(dtA, interv, 1));
181
182        dtA = new Date(2001, 0, 1);
183        dtB = new Date(2002, 0, 1);
184        t.is(dtB, dojo.date.add(dtA, interv, 365));
185
186        dtA = new Date(2000, 0, 1);
187        dtB = new Date(2001, 0, 1);
188        t.is(dtB, dojo.date.add(dtA, interv, 366));
189
190        dtA = new Date(2000, 1, 28);
191        dtB = new Date(2000, 1, 29);
192        t.is(dtB, dojo.date.add(dtA, interv, 1));
193
194        dtA = new Date(2001, 1, 28);
195        dtB = new Date(2001, 2, 1);
196        t.is(dtB, dojo.date.add(dtA, interv, 1));
197
198        dtA = new Date(2000, 2, 1);
199        dtB = new Date(2000, 1, 29);
200        t.is(dtB, dojo.date.add(dtA, interv, -1));
201
202        dtA = new Date(2001, 2, 1);
203        dtB = new Date(2001, 1, 28);
204        t.is(dtB, dojo.date.add(dtA, interv, -1));
205
206        dtA = new Date(2000, 0, 1);
207        dtB = new Date(1999, 11, 31);
208        t.is(dtB, dojo.date.add(dtA, interv, -1));
209
210        interv = "weekday";
211        // Sat, Jan 1
212        dtA = new Date(2000, 0, 1);
213        // Should be Mon, Jan 3
214        dtB = new Date(2000, 0, 3);
215        t.is(dtB, dojo.date.add(dtA, interv, 1));
216
217        // Sun, Jan 2
218        dtA = new Date(2000, 0, 2);
219        // Should be Mon, Jan 3
220        dtB = new Date(2000, 0, 3);
221        t.is(dtB, dojo.date.add(dtA, interv, 1));
222
223        // Sun, Jan 2
224        dtA = new Date(2000, 0, 2);
225        // Should be Fri, Jan 7
226        dtB = new Date(2000, 0, 7);
227        t.is(dtB, dojo.date.add(dtA, interv, 5));
228
229        // Sun, Jan 2
230        dtA = new Date(2000, 0, 2);
231        // Should be Mon, Jan 10
232        dtB = new Date(2000, 0, 10);
233        t.is(dtB, dojo.date.add(dtA, interv, 6));
234
235        // Mon, Jan 3
236        dtA = new Date(2000, 0, 3);
237        // Should be Mon, Jan 17
238        dtB = new Date(2000, 0, 17);
239        t.is(dtB, dojo.date.add(dtA, interv, 10));
240
241        // Sat, Jan 8
242        dtA = new Date(2000, 0, 8);
243        // Should be Mon, Jan 3
244        dtB = new Date(2000, 0, 3);
245        t.is(dtB, dojo.date.add(dtA, interv, -5));
246
247        // Sun, Jan 9
248        dtA = new Date(2000, 0, 9);
249        // Should be Wed, Jan 5
250        dtB = new Date(2000, 0, 5);
251        t.is(dtB, dojo.date.add(dtA, interv, -3));
252
253        // Sun, Jan 23
254        dtA = new Date(2000, 0, 23);
255        // Should be Fri, Jan 7
256        dtB = new Date(2000, 0, 7);
257        t.is(dtB, dojo.date.add(dtA, interv, -11));
258
259        interv = "hour";
260        dtA = new Date(2000, 0, 1, 11);
261        dtB = new Date(2000, 0, 1, 12);
262        t.is(dtB, dojo.date.add(dtA, interv, 1));
263
264        dtA = new Date(2001, 9, 28, 0);
265        dtB = new Date(dtA.getTime() + (60 * 60 * 1000));
266        t.is(dtB, dojo.date.add(dtA, interv, 1));
267
268        dtA = new Date(2001, 9, 28, 23);
269        dtB = new Date(2001, 9, 29, 0);
270        t.is(dtB, dojo.date.add(dtA, interv, 1));
271
272        dtA = new Date(2001, 11, 31, 23);
273        dtB = new Date(2002, 0, 1, 0);
274        t.is(dtB, dojo.date.add(dtA, interv, 1));
275
276        interv = "minute";
277        dtA = new Date(2000, 11, 31, 23, 59);
278        dtB = new Date(2001, 0, 1, 0, 0);
279        t.is(dtB, dojo.date.add(dtA, interv, 1));
280
281        dtA = new Date(2000, 11, 27, 12, 2);
282        dtB = new Date(2000, 11, 27, 13, 2);
283        t.is(dtB, dojo.date.add(dtA, interv, 60));
284
285        interv = "second";
286        dtA = new Date(2000, 11, 31, 23, 59, 59);
287        dtB = new Date(2001, 0, 1, 0, 0, 0);
288        t.is(dtB, dojo.date.add(dtA, interv, 1));
289
290        dtA = new Date(2000, 11, 27, 8, 10, 59);
291        dtB = new Date(2000, 11, 27, 8, 11, 59);
292        t.is(dtB, dojo.date.add(dtA, interv, 60));
293
294        // Test environment JS Date doesn't support millisec?
295        //interv = "millisecond";
296        //
297        //dtA = new Date(2000, 11, 31, 23, 59, 59, 999);
298        //dtB = new Date(2001, 0, 1, 0, 0, 0, 0);
299        //t.is(dtB, dojo.date.add(dtA, interv, 1));
300        //
301        //dtA = new Date(2000, 11, 27, 8, 10, 53, 2);
302        //dtB = new Date(2000, 11, 27, 8, 10, 54, 2);
303        //t.is(dtB, dojo.date.add(dtA, interv, 1000));
304},
305function test_date_diff(t){
306        var dtA = null; // First date to compare
307        var dtB = null; // Second date to compare
308        var interv = ''; // Interval to compare on (e.g., year, month)
309
310        interv = "year";
311        dtA = new Date(2005, 11, 27);
312        dtB = new Date(2006, 11, 27);
313        t.is(1, dojo.date.difference(dtA, dtB, interv));
314
315        dtA = new Date(2000, 11, 31);
316        dtB = new Date(2001, 0, 1);
317        t.is(1, dojo.date.difference(dtA, dtB, interv));
318
319        interv = "quarter";
320        dtA = new Date(2000, 1, 29);
321        dtB = new Date(2001, 2, 1);
322        t.is(4, dojo.date.difference(dtA, dtB, interv));
323
324        dtA = new Date(2000, 11, 1);
325        dtB = new Date(2001, 0, 1);
326        t.is(1, dojo.date.difference(dtA, dtB, interv));
327
328        interv = "month";
329        dtA = new Date(2000, 1, 29);
330        dtB = new Date(2001, 2, 1);
331        t.is(13, dojo.date.difference(dtA, dtB, interv));
332
333        dtA = new Date(2000, 11, 1);
334        dtB = new Date(2001, 0, 1);
335        t.is(1, dojo.date.difference(dtA, dtB, interv));
336
337        interv = "week";
338        dtA = new Date(2000, 1, 1);
339        dtB = new Date(2000, 1, 8);
340        t.is(1, dojo.date.difference(dtA, dtB, interv));
341
342        dtA = new Date(2000, 1, 28);
343        dtB = new Date(2000, 2, 6);
344        t.is(1, dojo.date.difference(dtA, dtB, interv));
345
346        dtA = new Date(2000, 2, 6);
347        dtB = new Date(2000, 1, 28);
348        t.is(-1, dojo.date.difference(dtA, dtB, interv));
349
350        interv = "day";
351        dtA = new Date(2000, 1, 29);
352        dtB = new Date(2000, 2, 1);
353        t.is(1, dojo.date.difference(dtA, dtB, interv));
354
355        dtA = new Date(2000, 11, 31);
356        dtB = new Date(2001, 0, 1);
357        t.is(1, dojo.date.difference(dtA, dtB, interv));
358
359        // DST leap -- check for rounding err
360        // This is dependent on US calendar, but
361        // shouldn't break in other locales
362        dtA = new Date(2005, 3, 3);
363        dtB = new Date(2005, 3, 4);
364        t.is(1, dojo.date.difference(dtA, dtB, interv));
365
366        interv = "weekday";
367        dtA = new Date(2006, 7, 3);
368        dtB = new Date(2006, 7, 11);
369        t.is(6, dojo.date.difference(dtA, dtB, interv));
370
371        // Positive diffs
372        dtA = new Date(2006, 7, 4);
373        dtB = new Date(2006, 7, 11);
374        t.is(5, dojo.date.difference(dtA, dtB, interv));
375
376        dtA = new Date(2006, 7, 5);
377        dtB = new Date(2006, 7, 11);
378        t.is(5, dojo.date.difference(dtA, dtB, interv));
379
380        dtA = new Date(2006, 7, 6);
381        dtB = new Date(2006, 7, 11);
382        t.is(5, dojo.date.difference(dtA, dtB, interv));
383
384        dtA = new Date(2006, 7, 7);
385        dtB = new Date(2006, 7, 11);
386        t.is(4, dojo.date.difference(dtA, dtB, interv));
387
388        dtA = new Date(2006, 7, 7);
389        dtB = new Date(2006, 7, 13);
390        t.is(4, dojo.date.difference(dtA, dtB, interv));
391
392        dtA = new Date(2006, 7, 7);
393        dtB = new Date(2006, 7, 14);
394        t.is(5, dojo.date.difference(dtA, dtB, interv));
395
396        dtA = new Date(2006, 7, 7);
397        dtB = new Date(2006, 7, 15);
398        t.is(6, dojo.date.difference(dtA, dtB, interv));
399
400        dtA = new Date(2006, 7, 7);
401        dtB = new Date(2006, 7, 28);
402        t.is(15, dojo.date.difference(dtA, dtB, interv));
403
404        dtA = new Date(2006, 2, 2);
405        dtB = new Date(2006, 2, 28);
406        t.is(18, dojo.date.difference(dtA, dtB, interv));
407
408        // Negative diffs
409        dtA = new Date(2006, 7, 11);
410        dtB = new Date(2006, 7, 4);
411        t.is(-5, dojo.date.difference(dtA, dtB, interv));
412
413        dtA = new Date(2006, 7, 11);
414        dtB = new Date(2006, 7, 5);
415        t.is(-4, dojo.date.difference(dtA, dtB, interv));
416
417        dtA = new Date(2006, 7, 11);
418        dtB = new Date(2006, 7, 6);
419        t.is(-4, dojo.date.difference(dtA, dtB, interv));
420
421        dtA = new Date(2006, 7, 11);
422        dtB = new Date(2006, 7, 7);
423        t.is(-4, dojo.date.difference(dtA, dtB, interv));
424
425        dtA = new Date(2006, 7, 13);
426        dtB = new Date(2006, 7, 7);
427        t.is(-5, dojo.date.difference(dtA, dtB, interv));
428
429        dtA = new Date(2006, 7, 14);
430        dtB = new Date(2006, 7, 7);
431        t.is(-5, dojo.date.difference(dtA, dtB, interv));
432
433        dtA = new Date(2006, 7, 15);
434        dtB = new Date(2006, 7, 7);
435        t.is(-6, dojo.date.difference(dtA, dtB, interv));
436
437        dtA = new Date(2006, 7, 28);
438        dtB = new Date(2006, 7, 7);
439        t.is(-15, dojo.date.difference(dtA, dtB, interv));
440
441        dtA = new Date(2006, 2, 28);
442        dtB = new Date(2006, 2, 2);
443        t.is(-18, dojo.date.difference(dtA, dtB, interv));
444
445        // Two days on the same weekend -- no weekday diff
446        dtA = new Date(2006, 7, 5);
447        dtB = new Date(2006, 7, 6);
448        t.is(0, dojo.date.difference(dtA, dtB, interv));
449
450        interv = "hour";
451        dtA = new Date(2000, 11, 31, 23);
452        dtB = new Date(2001, 0, 1, 0);
453        t.is(1, dojo.date.difference(dtA, dtB, interv));
454
455        dtA = new Date(2000, 11, 31, 12);
456        dtB = new Date(2001, 0, 1, 0);
457        t.is(12, dojo.date.difference(dtA, dtB, interv));
458
459        interv = "minute";
460        dtA = new Date(2000, 11, 31, 23, 59);
461        dtB = new Date(2001, 0, 1, 0, 0);
462        t.is(1, dojo.date.difference(dtA, dtB, interv));
463
464        dtA = new Date(2000, 1, 28, 23, 59);
465        dtB = new Date(2000, 1, 29, 0, 0);
466        t.is(1, dojo.date.difference(dtA, dtB, interv));
467
468        interv = "second";
469        dtA = new Date(2000, 11, 31, 23, 59, 59);
470        dtB = new Date(2001, 0, 1, 0, 0, 0);
471        t.is(1, dojo.date.difference(dtA, dtB, interv));
472
473        interv = "millisecond";
474        dtA = new Date(2000, 11, 31, 23, 59, 59, 999);
475        dtB = new Date(2001, 0, 1, 0, 0, 0, 0);
476        t.is(1, dojo.date.difference(dtA, dtB, interv));
477
478        dtA = new Date(2000, 11, 31, 23, 59, 59, 0);
479        dtB = new Date(2001, 0, 1, 0, 0, 0, 0);
480        t.is(1000, dojo.date.difference(dtA, dtB, interv));
481},
482function test_date_add_diff_year(t){
483        var interv = ''; // Interval (e.g., year, month)
484        var dtA = null; // Date to increment
485        var dtB = null; // Expected result date
486
487        interv = "year";
488        dtA = new Date(2005, 11, 27);
489        dtB = dojo.date.add(dtA, interv, 1);
490        t.is(dojo.date.difference(dtA, dtB, interv), 1);
491
492        dtA = new Date(2005, 11, 27);
493        dtB = dojo.date.add(dtA, interv, -1);
494        t.is(dojo.date.difference(dtA, dtB, interv), -1);
495
496        dtA = new Date(2000, 1, 29);
497        dtB = dojo.date.add(dtA, interv, 1);
498        t.is(dojo.date.difference(dtA, dtB, interv), 1);
499
500        dtA = new Date(2000, 1, 29);
501        dtB = dojo.date.add(dtA, interv, 5);
502        t.is(dojo.date.difference(dtA, dtB, interv), 5);
503
504        dtA = new Date(1900, 11, 31);
505        dtB = dojo.date.add(dtA, interv, 30);
506        t.is(dojo.date.difference(dtA, dtB, interv), 30);
507
508        dtA = new Date(1995, 11, 31);
509        dtB = dojo.date.add(dtA, interv, 35);
510        t.is(dojo.date.difference(dtA, dtB, interv), 35);
511},
512function test_date_add_diff_quarter(t){
513        var interv = ''; // Interval (e.g., year, month)
514        var dtA = null; // Date to increment
515        var dtB = null; // Expected result date
516        interv = "quarter";
517        dtA = new Date(2000, 0, 1);
518        dtB = dojo.date.add(dtA, interv, 1);
519        t.is(dojo.date.difference(dtA, dtB, interv), 1);
520
521        dtA = new Date(2000, 1, 29);
522        dtB = dojo.date.add(dtA, interv, 2);
523        t.is(dojo.date.difference(dtA, dtB, interv), 2);
524
525        dtA = new Date(2000, 1, 29);
526        dtB = dojo.date.add(dtA, interv, 4);
527        t.is(dojo.date.difference(dtA, dtB, interv), 4);
528},
529function test_date_add_diff_month(t){
530        var interv = ''; // Interval (e.g., year, month)
531        var dtA = null; // Date to increment
532        var dtB = null; // Expected result date
533        interv = "month";
534        dtA = new Date(2000, 0, 1);
535        dtB = dojo.date.add(dtA, interv, 1);
536        t.is(dojo.date.difference(dtA, dtB, interv), 1);
537
538        dtA = new Date(2000, 0, 31);
539        dtB = dojo.date.add(dtA, interv, 1);
540        t.is(dojo.date.difference(dtA, dtB, interv), 1);
541
542        dtA = new Date(2000, 1, 29);
543        dtB = dojo.date.add(dtA, interv, 12);
544        t.is(dojo.date.difference(dtA, dtB, interv), 12);
545},
546function test_date_add_diff_week(t){
547        var interv = ''; // Interval (e.g., year, month)
548        var dtA = null; // Date to increment
549        var dtB = null; // Expected result date
550        interv = "week";
551        dtA = new Date(2000, 0, 1);
552        dtB = dojo.date.add(dtA, interv, 1);
553        t.is(dojo.date.difference(dtA, dtB, interv), 1);
554},
555function test_date_add_diff_day(t){
556        var interv = ''; // Interval (e.g., year, month)
557        var dtA = null; // Date to increment
558        var dtB = null; // Expected result date
559        interv = "day";
560        dtA = new Date(2000, 0, 1);
561        dtB = dojo.date.add(dtA, interv, 1);
562        t.is(dojo.date.difference(dtA, dtB, interv), 1);
563
564        dtA = new Date(2001, 0, 1);
565        dtB = dojo.date.add(dtA, interv, 365);
566        t.is(dojo.date.difference(dtA, dtB, interv), 365);
567
568        dtA = new Date(2000, 0, 1);
569        dtB = dojo.date.add(dtA, interv, 366);
570        t.is(dojo.date.difference(dtA, dtB, interv), 366);
571
572        dtA = new Date(2000, 1, 28);
573        dtB = dojo.date.add(dtA, interv, 1);
574        t.is(dojo.date.difference(dtA, dtB, interv), 1);
575
576        dtA = new Date(2001, 1, 28);
577        dtB = dojo.date.add(dtA, interv, 1);
578        t.is(dojo.date.difference(dtA, dtB, interv), 1);
579
580        dtA = new Date(2000, 2, 1);
581        dtB = dojo.date.add(dtA, interv, -1);
582        t.is(dojo.date.difference(dtA, dtB, interv), -1);
583
584        dtA = new Date(2001, 2, 1);
585        dtB = dojo.date.add(dtA, interv, -1);
586        t.is(dojo.date.difference(dtA, dtB, interv), -1);
587
588        dtA = new Date(2000, 0, 1);
589        dtB = dojo.date.add(dtA, interv, -1);
590        t.is(dojo.date.difference(dtA, dtB, interv), -1);
591},
592function test_date_add_diff_weekday(t){
593        var interv = ''; // Interval (e.g., year, month)
594        var dtA = null; // Date to increment
595        var dtB = null; // Expected result date
596        interv = "weekday";
597        // Sat, Jan 1
598        dtA = new Date(2000, 0, 1);
599        // Should be Mon, Jan 3
600        dtB = dojo.date.add(dtA, interv, 1);
601        t.is(dojo.date.difference(dtA, dtB, interv), 1);
602
603        // Sun, Jan 2
604        dtA = new Date(2000, 0, 2);
605        // Should be Mon, Jan 3
606        dtB = dojo.date.add(dtA, interv, 1);
607        t.is(dojo.date.difference(dtA, dtB, interv), 1);
608
609        // Sun, Jan 2
610        dtA = new Date(2000, 0, 2);
611        // Should be Fri, Jan 7
612        dtB = dojo.date.add(dtA, interv, 5);
613        t.is(dojo.date.difference(dtA, dtB, interv), 5);
614
615        // Sun, Jan 2
616        dtA = new Date(2000, 0, 2);
617        // Should be Mon, Jan 10
618        dtB = dojo.date.add(dtA, interv, 6);
619        t.is(dojo.date.difference(dtA, dtB, interv), 6);
620
621        // Mon, Jan 3
622        dtA = new Date(2000, 0, 3);
623        // Should be Mon, Jan 17
624        dtB = dojo.date.add(dtA, interv, 10);
625        t.is(dojo.date.difference(dtA, dtB, interv), 10);
626
627        // Sat, Jan 8
628        dtA = new Date(2000, 0, 8);
629        // Should be Mon, Jan 3
630        dtB = dojo.date.add(dtA, interv, -5);
631        t.is(dojo.date.difference(dtA, dtB, interv), -5);
632
633        // Sun, Jan 9
634        dtA = new Date(2000, 0, 9);
635        // Should be Wed, Jan 5
636        dtB = dojo.date.add(dtA, interv, -3);
637        t.is(dojo.date.difference(dtA, dtB, interv), -3);
638
639        // Sun, Jan 23
640        dtA = new Date(2000, 0, 23);
641        // Should be Fri, Jan 7
642        dtB = dojo.date.add(dtA, interv, -11);
643        t.is(dojo.date.difference(dtA, dtB, interv), -11);
644},
645function test_date_add_diff_hour(t){
646        var interv = ''; // Interval (e.g., year, month)
647        var dtA = null; // Date to increment
648        var dtB = null; // Expected result date
649        interv = "hour";
650        dtA = new Date(2000, 0, 1, 11);
651        dtB = dojo.date.add(dtA, interv, 1);
652        t.is(dojo.date.difference(dtA, dtB, interv), 1);
653
654        dtA = new Date(2001, 9, 28, 0);
655        dtB = dojo.date.add(dtA, interv, 1);
656        t.is(dojo.date.difference(dtA, dtB, interv), 1);
657
658        dtA = new Date(2001, 9, 28, 23);
659        dtB = dojo.date.add(dtA, interv, 1);
660        t.is(dojo.date.difference(dtA, dtB, interv), 1);
661
662        dtA = new Date(2001, 11, 31, 23);
663        dtB = dojo.date.add(dtA, interv, 1);
664        t.is(dojo.date.difference(dtA, dtB, interv), 1);
665},
666function test_date_add_diff_minute(t){
667        var interv = ''; // Interval (e.g., year, month)
668        var dtA = null; // Date to increment
669        var dtB = null; // Expected result date
670        interv = "minute";
671        dtA = new Date(2000, 11, 31, 23, 59);
672        dtB = dojo.date.add(dtA, interv, 1);
673        t.is(dojo.date.difference(dtA, dtB, interv), 1);
674
675        dtA = new Date(2000, 11, 27, 12, 2);
676        dtB = dojo.date.add(dtA, interv, 60);
677        t.is(dojo.date.difference(dtA, dtB, interv), 60);
678},
679function test_date_add_diff_second(t){
680        var interv = ''; // Interval (e.g., year, month)
681        var dtA = null; // Date to increment
682        var dtB = null; // Expected result date
683        console.debug("second");
684        interv = "second";
685        dtA = new Date(2000, 11, 31, 23, 59, 59);
686        dtB = dojo.date.add(dtA, interv, 1);
687        t.is(dojo.date.difference(dtA, dtB, interv), 1);
688
689        dtA = new Date(2000, 11, 27, 8, 10, 59);
690        dtB = dojo.date.add(dtA, interv, 60);
691        t.is(dojo.date.difference(dtA, dtB, interv), 60);
692
693        // Test environment JS Date doesn't support millisec?
694        //interv = "millisecond";
695        //
696        //dtA = new Date(2000, 11, 31, 23, 59, 59, 999);
697        //dtB = dojo.date.add(dtA, interv, 1);
698        //t.is(dojo.date.difference(dtA, dtB, interv), 1);
699        //
700        //dtA = new Date(2000, 11, 27, 8, 10, 53, 2);
701        //dtB = dojo.date.add(dtA, interv, 1000);
702        //t.is(dojo.date.difference(dtA, dtB, interv), 1000);
703}
704        ]
705);
706});
Note: See TracBrowser for help on using the repository browser.