| 1 | if (typeof(dojo) != 'undefined') { dojo.require('MochiKit.DateTime'); } |
| 2 | if (typeof(JSAN) != 'undefined') { JSAN.use('MochiKit.DateTime'); } |
| 3 | if (typeof(tests) == 'undefined') { tests = {}; } |
| 4 | |
| 5 | tests.test_DateTime = function (t) { |
| 6 | var testDate = isoDate('2005-2-3'); |
| 7 | t.is(testDate.getFullYear(), 2005, "isoDate year ok"); |
| 8 | t.is(testDate.getDate(), 3, "isoDate day ok"); |
| 9 | t.is(testDate.getMonth(), 1, "isoDate month ok"); |
| 10 | t.ok(objEqual(testDate, new Date("February 3, 2005")), "matches string date"); |
| 11 | t.is(toISODate(testDate), '2005-02-03', 'toISODate ok'); |
| 12 | |
| 13 | var testDate = isoDate('2005-06-08'); |
| 14 | t.is(testDate.getFullYear(), 2005, "isoDate year ok"); |
| 15 | t.is(testDate.getDate(), 8, "isoDate day ok"); |
| 16 | t.is(testDate.getMonth(), 5, "isoDate month ok"); |
| 17 | t.ok(objEqual(testDate, new Date("June 8, 2005")), "matches string date"); |
| 18 | t.is(toISODate(testDate), '2005-06-08', 'toISODate ok'); |
| 19 | |
| 20 | t.is(compare(new Date("February 3, 2005"), new Date(2005, 1, 3)), 0, "dates compare eq"); |
| 21 | t.is(compare(new Date("February 3, 2005"), new Date(2005, 2, 3)), -1, "dates compare lt"); |
| 22 | t.is(compare(new Date("February 3, 2005"), new Date(2005, 0, 3)), 1, "dates compare gt"); |
| 23 | |
| 24 | var testDate = isoDate('2005-2-3'); |
| 25 | t.is(compare(americanDate('2/3/2005'), testDate), 0, "americanDate eq"); |
| 26 | t.is(compare('2/3/2005', toAmericanDate(testDate)), 0, "toAmericanDate eq"); |
| 27 | |
| 28 | var testTimestamp = isoTimestamp('2005-2-3 22:01:03'); |
| 29 | t.is(compare(testTimestamp, new Date(2005,1,3,22,1,3)), 0, "isoTimestamp eq"); |
| 30 | t.is(compare(testTimestamp, isoTimestamp('2005-2-3T22:01:03')), 0, "isoTimestamp (real ISO) eq"); |
| 31 | t.is(compare(toISOTimestamp(testTimestamp), '2005-02-03 22:01:03'), 0, "toISOTimestamp eq"); |
| 32 | testTimestamp = isoTimestamp('2005-2-3T22:01:03Z'); |
| 33 | t.is(toISOTimestamp(testTimestamp, true), '2005-02-03T22:01:03Z', "toISOTimestamp (real ISO) eq"); |
| 34 | |
| 35 | var localTZ = Math.round((new Date(2005,1,3,22,1,3)).getTimezoneOffset()/60) |
| 36 | var direction = (localTZ < 0) ? "+" : "-"; |
| 37 | localTZ = Math.abs(localTZ); |
| 38 | localTZ = direction + ((localTZ < 10) ? "0" : "") + localTZ; |
| 39 | testTimestamp = isoTimestamp("2005-2-3T22:01:03" + localTZ); |
| 40 | var testDateTimestamp = new Date(2005,1,3,22,1,3); |
| 41 | t.is(compare(testTimestamp, testDateTimestamp), 0, "equal with local tz"); |
| 42 | testTimestamp = isoTimestamp("2005-2-3T17:01:03-05"); |
| 43 | var testDateTimestamp = new Date(Date.UTC(2005,1,3,22,1,3)); |
| 44 | t.is(compare(testTimestamp, testDateTimestamp), 0, "equal with specific tz"); |
| 45 | }; |