UNPKG

sku-pg

Version:

Skulpt is a Javascript implementation of Python 2.x. Python that runs in your browser!

785 lines (643 loc) 27 kB
<!DOCTYPE html> <html> <!-- Copyright 2006 The Closure Library Authors. All Rights Reserved. Use of this source code is governed by an Apache 2.0 License. See the COPYING file for details. --> <!-- All Rights Reserved. --> <head> <title>Closure Unit Tests - goog.i18n.DateTimeParse</title> <meta charset="utf-8"/> <script src="../base.js"></script> <script> goog.require('goog.i18n.DateTimeFormat'); goog.require('goog.i18n.DateTimeParse'); goog.require('goog.i18n.DateTimeSymbols'); goog.require('goog.testing.jsunit'); goog.require('goog.userAgent'); </script> </head> <body> <script> /** * Date/time formatting symbols for locale en. * @enum {Array.<string|number>|number} */ goog.i18n.DateTimeSymbols_en = { ERAS: ['BC', 'AD'], ERANAMES: ['Before Christ', 'Anno Domini'], NARROWMONTHS: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], STANDALONENARROWMONTHS: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], MONTHS: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], STANDALONEMONTHS: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], SHORTMONTHS: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], STANDALONESHORTMONTHS: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], WEEKDAYS: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], STANDALONEWEEKDAYS: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], SHORTWEEKDAYS: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], STANDALONESHORTWEEKDAYS: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], NARROWWEEKDAYS: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], STANDALONENARROWWEEKDAYS: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], SHORTQUARTERS: ['Q1', 'Q2', 'Q3', 'Q4'], QUARTERS: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter'], AMPMS: ['AM', 'PM'], DATEFORMATS: ['EEEE, MMMM d, yyyy', 'MMMM d, yyyy', 'MMM d, yyyy', 'M/d/yy'], TIMEFORMATS: ['h:mm:ss a v', 'h:mm:ss a z', 'h:mm:ss a', 'h:mm a'], FIRSTDAYOFWEEK: 6, WEEKENDRANGE: [5, 6], FIRSTWEEKCUTOFFDAY: 5 }; /** * Date/time formatting symbols for locale fr. * @enum {Array.<string|number>|number} */ goog.i18n.DateTimeSymbols_fr = { ERAS: ['av. J.-C.', 'ap. J.-C.'], ERANAMES: ['avant Jésus-Christ', 'après Jésus-Christ'], NARROWMONTHS: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], STANDALONENARROWMONTHS: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], MONTHS: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'], STANDALONEMONTHS: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'], SHORTMONTHS: ['janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'], STANDALONESHORTMONTHS: ['janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc]'], WEEKDAYS: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], STANDALONEWEEKDAYS: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], SHORTWEEKDAYS: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], STANDALONESHORTWEEKDAYS: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], NARROWWEEKDAYS: ['D', 'L', 'M', 'M', 'J', 'V', 'S'], STANDALONENARROWWEEKDAYS: ['D', 'L', 'M', 'M', 'J', 'V', 'S'], SHORTQUARTERS: ['T1', 'T2', 'T3', 'T4'], QUARTERS: ['1er trimestre', '2e trimestre', '3e trimestre', '4e trimestre'], AMPMS: ['AM', 'PM'], DATEFORMATS: ['EEEE d MMMM yyyy', 'd MMMM yyyy', 'd MMM yyyy', 'dd/MM/yy'], TIMEFORMATS: ['HH:mm:ss v', 'HH:mm:ss z', 'HH:mm:ss', 'HH:mm'], FIRSTDAYOFWEEK: 0, WEEKENDRANGE: [5, 6], FIRSTWEEKCUTOFFDAY: 3 }; /** * Date/time formatting symbols for locale zh. * @enum {Array.<string|number>|number} */ goog.i18n.DateTimeSymbols_zh = { ERAS: ['公元前', '公元'], ERANAMES: ['公元前', '公元'], NARROWMONTHS: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], STANDALONENARROWMONTHS: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], MONTHS: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], STANDALONEMONTHS: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], SHORTMONTHS: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], STANDALONESHORTMONTHS: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], WEEKDAYS: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], STANDALONEWEEKDAYS: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], SHORTWEEKDAYS: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'], STANDALONESHORTWEEKDAYS: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'], NARROWWEEKDAYS: ['日', '一', '二', '三', '四', '五', '六'], STANDALONENARROWWEEKDAYS: ['日', '一', '二', '三', '四', '五', '六'], SHORTQUARTERS: ['1季', '2季', '3季', '4季'], QUARTERS: ['第1季度', '第2季度', '第3季度', '第4季度'], AMPMS: ['上午', '下午'], DATEFORMATS: ['yyyy年M月d日EEEE', 'yyyy年M月d日', 'yyyy-M-d', 'yy-M-d'], TIMEFORMATS: ['ahh时mm分ss秒v', 'ahh时mm分ss秒z', 'ahh:mm:ss', 'ah:mm'], FIRSTDAYOFWEEK: 6, WEEKENDRANGE: [5, 6], FIRSTWEEKCUTOFFDAY: 5 }; goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_en; function testNegativeYear() { var date = new Date(); var parser = new goog.i18n.DateTimeParse('MM/dd, yyyy'); assertTrue(parser.parse('11/22, 1999', date) > 0); assertEquals(1999, date.getFullYear()); assertEquals(11 - 1, date.getMonth()); assertEquals(22, date.getDate()); assertTrue(parser.parse('11/22, -1999', date) > 0); assertEquals(-1999, date.getFullYear()); assertEquals(11 - 1, date.getMonth()); assertEquals(22, date.getDate()); } function testEra() { // Bug 2350397 if (goog.userAgent.WEBKIT) { // Bug 2350397 Test seems to be very flaky on Chrome. Disabling it return; } var date = new Date(); var parser = new goog.i18n.DateTimeParse('MM/dd, yyyyG'); assertTrue(parser.parse('11/22, 1999BC', date) > 0); assertEquals(-1998, date.getFullYear()); assertEquals(11 - 1, date.getMonth()); assertEquals(22, date.getDate()); assertTrue(parser.parse('11/22, 1BC', date) > 0); assertEquals(0, date.getFullYear()); assertEquals(11 - 1, date.getMonth()); assertEquals(22, date.getDate()); assertTrue(parser.parse('11/22, 1999AD', date) > 0); assertEquals(1999, date.getFullYear()); assertEquals(11 - 1, date.getMonth()); assertEquals(22, date.getDate()); } function testFractionalSeconds() { var date = new Date(); var parser = new goog.i18n.DateTimeParse('hh:mm:ss.SSS'); assertTrue(parser.parse('11:12:13.956', date) > 0); assertEquals(11, date.getHours()); assertEquals(12, date.getMinutes()); assertEquals(13, date.getSeconds()); assertEquals(956, date.getTime() % 1000); assertTrue(parser.parse('11:12:13.95', date) > 0); assertEquals(11, date.getHours()); assertEquals(12, date.getMinutes()); assertEquals(13, date.getSeconds()); assertEquals(950, date.getTime() % 1000); assertTrue(parser.parse('11:12:13.9', date) > 0); assertEquals(11, date.getHours()); assertEquals(12, date.getMinutes()); assertEquals(13, date.getSeconds()); assertEquals(900, date.getTime() % 1000); } function testAmbiguousYear() { // Bug 2350397 Test seems to fail on all browsers. Disabling it. return; var date = new Date(); // assume this year is 2006, year 27 to 99 will be interpret as 1927 to 1999 // year 00 to 25 will be 2000 to 2025. Year 26 can be either 1926 or 2026 // depend on the exact time. var orgDate = new Date(); orgDate.setFullYear(orgDate.getFullYear() + 20); // following 2 lines only works in 2006. Keep them here as they explained // our intention better. //assertTrue(DateTimeParse.parse('01/01/26', 0, 'MM/dd/yy', date) > 0); //assertTrue(date.getYear() == 2026 - 1900); // rewrite so that it works in any year. orgDate.setMonth(0); orgDate.setDate(1); orgDate.setHours(0); orgDate.setMinutes(0); orgDate.setSeconds(0); orgDate.setMilliseconds(1); var str = '01/01/' + (orgDate.getFullYear() % 100); var parser = new goog.i18n.DateTimeParse('MM/dd/yy'); assertTrue(parser.parse(str, date) > 0); assertEquals(orgDate.getFullYear(), date.getFullYear()); // following 2 lines only works in 2006. Keep them here as they explained // our intention better. //assertTrue(DateTimeParse.parse('MM/dd/yy', '12/30/26', date) > 0); //assertTrue(date.getYear() == 1926 - 1900); // rewrite so that it works in any year. orgDate.setMonth(11); orgDate.setDate(31); orgDate.setHours(23); orgDate.setMinutes(59); orgDate.setSeconds(59); orgDate.setMilliseconds(999); str = '12/31/' + (orgDate.getFullYear() % 100); var parser1 = new goog.i18n.DateTimeParse('MM/dd/yy'); assertTrue(parser1.parse(str, date) > 0); assertEquals(orgDate.getFullYear(), date.getFullYear()+100); var parser2 = new goog.i18n.DateTimeParse('yy,MM,dd'); assertTrue(parser2.parse('2097,07,21', date) > 0); assertEquals(2097, date.getFullYear()); // Test the ability to move the disambiguation century goog.i18n.DateTimeParse.ambiguousYearCenturyStart = 60; orgDate.setMonth(0); orgDate.setDate(1); orgDate.setHours(0); orgDate.setMinutes(0); orgDate.setSeconds(0); orgDate.setMilliseconds(1); str = '01/01/' + (orgDate.getFullYear() % 100); assertTrue(parser1.parse(str, date) > 0); assertEquals(orgDate.getFullYear(), date.getFullYear()); // Increment orgDate 20 more years orgDate.setFullYear(date.getFullYear() + 20); str = '01/01/' + (orgDate.getFullYear() % 100); assertTrue(parser1.parse(str, date) > 0); assertEquals(orgDate.getFullYear(), date.getFullYear()); orgDate.setFullYear(date.getFullYear() + 21); str = '01/01/' + (orgDate.getFullYear() % 100); assertTrue(parser1.parse(str, date) > 0); assertEquals(orgDate.getFullYear(), date.getFullYear()+100); // Reset parameter for other test cases goog.i18n.DateTimeParse.ambiguousYearCenturyStart = 80; } function testLeapYear() { var date = new Date(); var parser = new goog.i18n.DateTimeParse('MMdd, yyyy'); assertTrue(parser.parse('0229, 2001', date) > 0); assertEquals(3 - 1, date.getMonth()); assertEquals(1, date.getDate()); assertTrue(parser.parse('0229, 2000', date) > 0); assertEquals(2 - 1, date.getMonth()); assertEquals(29, date.getDate()); } function testAbutField() { var date = new Date(); var parser = new goog.i18n.DateTimeParse('hhmm'); assertTrue(parser.parse('1122', date) > 0); assertEquals(11, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser.parse('122', date) > 0); assertEquals(1, date.getHours()); assertEquals(22, date.getMinutes()); var parser2 = new goog.i18n.DateTimeParse('hhmmss'); assertTrue(parser2.parse('112233', date) > 0); assertEquals(11, date.getHours()); assertEquals(22, date.getMinutes()); assertEquals(33, date.getSeconds()); assertTrue(parser2.parse('12233', date) > 0); assertEquals(1, date.getHours()); assertEquals(22, date.getMinutes()); assertEquals(33, date.getSeconds()); var parser3 = new goog.i18n.DateTimeParse('yyyyMMdd'); assertTrue(parser3.parse('19991202', date) > 0); assertEquals(1999, date.getFullYear()); assertEquals(12 - 1, date.getMonth()); assertEquals(02, date.getDate()); assertTrue(parser3.parse('9991202', date) > 0); assertTrue(date.getFullYear() == 999); assertEquals(12 - 1, date.getMonth()); assertEquals(02, date.getDate()); assertTrue(parser3.parse('991202', date) > 0); assertEquals(99, date.getFullYear()); assertEquals(12 - 1, date.getMonth()); assertEquals(02, date.getDate()); assertTrue(parser3.parse('91202', date) > 0); assertEquals(9, date.getFullYear()); assertEquals(12 - 1, date.getMonth()); assertEquals(02, date.getDate()); } function testYearParsing() { var date = new Date(); var parser = new goog.i18n.DateTimeParse('yyMMdd'); assertTrue(parser.parse('991202', date) > 0); assertEquals(1999, date.getFullYear()); assertEquals(12 - 1, date.getMonth()); assertEquals(02, date.getDate()); var parser2 = new goog.i18n.DateTimeParse('yyyyMMdd'); assertTrue(parser2.parse('20051202', date) > 0); assertEquals(2005, date.getFullYear()); assertEquals(12 - 1, date.getMonth()); assertEquals(02, date.getDate()); } function testHourParsing_hh() { var date = new Date(); var parser = new goog.i18n.DateTimeParse('hhmm'); assertTrue(parser.parse('0022', date) > 0); assertEquals(00, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser.parse('1122', date) > 0); assertEquals(11, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser.parse('1222', date) > 0); assertEquals(00, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser.parse('2322', date) > 0); assertEquals(23, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser.parse('2422', date) > 0); assertEquals(00, date.getHours()); assertEquals(22, date.getMinutes()); var parser2 = new goog.i18n.DateTimeParse('hhmma'); assertTrue(parser2.parse('0022am', date) > 0); assertEquals(00, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('1122am', date) > 0); assertEquals(11, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('1222am', date) > 0); assertEquals(00, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('2322am', date) > 0); assertEquals(23, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('2422am', date) > 0); assertEquals(00, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('0022pm', date) > 0); assertEquals(12, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('1122pm', date) > 0); assertEquals(23, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('1222pm', date) > 0); assertEquals(12, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('2322pm', date) > 0); assertEquals(23, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('2422pm', date) > 0); assertEquals(00, date.getHours()); assertEquals(22, date.getMinutes()); } function testHourParsing_KK() { var date = new Date(); var parser = new goog.i18n.DateTimeParse('KKmm'); assertTrue(parser.parse('0022', date) > 0); assertEquals(00, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser.parse('1122', date) > 0); assertEquals(11, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser.parse('1222', date) > 0); assertEquals(12, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser.parse('2322', date) > 0); assertEquals(23, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser.parse('2422', date) > 0); assertEquals(00, date.getHours()); assertEquals(22, date.getMinutes()); var parser2 = new goog.i18n.DateTimeParse('KKmma'); assertTrue(parser2.parse('0022am', date) > 0); assertEquals(00, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('1122am', date) > 0); assertEquals(11, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('1222am', date) > 0); assertEquals(12, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('2322am', date) > 0); assertEquals(23, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('2422am', date) > 0); assertEquals(00, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('0022pm', date) > 0); assertEquals(12, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('1122pm', date) > 0); assertEquals(23, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('1222pm', date) > 0); assertEquals(12, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('2322pm', date) > 0); assertEquals(23, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('2422pm', date) > 0); assertEquals(00, date.getHours()); assertEquals(22, date.getMinutes()); } function testHourParsing_kk() { var date = new Date(); var parser = new goog.i18n.DateTimeParse('kkmm'); assertTrue(parser.parse('0022', date) > 0); assertEquals(00, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser.parse('1122', date) > 0); assertEquals(11, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser.parse('1222', date) > 0); assertEquals(12, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser.parse('2322', date) > 0); assertEquals(23, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser.parse('2422', date) > 0); assertEquals(00, date.getHours()); assertEquals(22, date.getMinutes()); var parser2 = new goog.i18n.DateTimeParse('kkmma'); assertTrue(parser2.parse('0022am', date) > 0); assertEquals(00, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('1122am', date) > 0); assertEquals(11, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('1222am', date) > 0); assertEquals(12, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('2322am', date) > 0); assertEquals(23, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('2422am', date) > 0); assertEquals(00, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('0022pm', date) > 0); assertEquals(12, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('1122pm', date) > 0); assertEquals(23, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('1222pm', date) > 0); assertEquals(12, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('2322pm', date) > 0); assertEquals(23, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('2422pm', date) > 0); assertEquals(00, date.getHours()); assertEquals(22, date.getMinutes()); } function testHourParsing_HH() { var date = new Date(); var parser = new goog.i18n.DateTimeParse('HHmm'); assertTrue(parser.parse('0022', date) > 0); assertEquals(00, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser.parse('1122', date) > 0); assertEquals(11, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser.parse('1222', date) > 0); assertEquals(12, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser.parse('2322', date) > 0); assertEquals(23, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser.parse('2422', date) > 0); assertEquals(00, date.getHours()); assertEquals(22, date.getMinutes()); var parser2 = new goog.i18n.DateTimeParse('HHmma'); assertTrue(parser2.parse('0022am', date) > 0); assertEquals(00, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('1122am', date) > 0); assertEquals(11, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('1222am', date) > 0); assertEquals(12, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('2322am', date) > 0); assertEquals(23, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('2422am', date) > 0); assertEquals(00, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('0022pm', date) > 0); assertEquals(12, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('1122pm', date) > 0); assertEquals(23, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('1222pm', date) > 0); assertEquals(12, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('2322pm', date) > 0); assertEquals(23, date.getHours()); assertEquals(22, date.getMinutes()); assertTrue(parser2.parse('2422pm', date) > 0); assertEquals(00, date.getHours()); assertEquals(22, date.getMinutes()); } function testEnglishDate() { var date = new Date(); var parser = new goog.i18n.DateTimeParse('yyyy MMM dd hh:mm'); assertTrue(parser.parse('2006 Jul 10 15:44', date) > 0); assertEquals(2006, date.getFullYear()); assertEquals(7 - 1, date.getMonth()); assertEquals(10, date.getDate()); assertEquals(15, date.getHours()); assertEquals(44, date.getMinutes()); } function testChineseDate() { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_zh; var date = new Date(); var parser = new goog.i18n.DateTimeParse( goog.i18n.DateTimeFormat.Format.FULL_DATE); parser.parse('2006\u5E747\u670824\u65E5\u661F\u671F\u4E00', date); assertEquals(2006, date.getFullYear()); assertEquals(7 - 1, date.getMonth()); assertEquals(24, date.getDate()); parser = new goog.i18n.DateTimeParse( goog.i18n.DateTimeFormat.Format.LONG_DATE); parser.parse('2006\u5E747\u670824\u65E5', date); assertEquals(2006, date.getFullYear()); assertEquals(7 - 1, date.getMonth()); assertEquals(24, date.getDate()); parser = new goog.i18n.DateTimeParse( goog.i18n.DateTimeFormat.Format.FULL_TIME); parser.parse('\u4E0B\u534803\u65F626\u520628\u79D2 GMT-07:00', date); assertEquals((24 + date.getHours() + date.getTimezoneOffset()/60) % 24, 22); assertEquals(26, date.getMinutes()); assertEquals(28, date.getSeconds()); goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_en; } function testTimeZone() { var date = new Date(); var parser = new goog.i18n.DateTimeParse('MM/dd/yyyy, hh:mm:ss zzz'); assertTrue(parser.parse('07/21/2003, 11:22:33 GMT-0700', date) > 0); var hourGmtMinus07 = date.getHours(); assertTrue(parser.parse('07/21/2003, 11:22:33 GMT-0600', date) > 0); var hourGmtMinus06 = date.getHours(); assertEquals(1, (hourGmtMinus07 + 24 - hourGmtMinus06) % 24); assertTrue(parser.parse('07/21/2003, 11:22:33 GMT-0800', date) > 0); var hourGmtMinus08 = date.getHours(); assertEquals(1, (hourGmtMinus08 + 24 - hourGmtMinus07) % 24); assertTrue(parser.parse('07/21/2003, 23:22:33 GMT-0800', date) > 0); assertEquals((date.getHours() + 24 - hourGmtMinus07) % 24, 13); assertTrue(parser.parse('07/21/2003, 11:22:33 GMT+0800', date) > 0); var hourGmt08 = date.getHours(); assertEquals(16, (hourGmtMinus08 + 24 - hourGmt08) % 24); assertTrue(parser.parse('07/21/2003, 11:22:33 GMT0800', date) > 0); assertEquals(hourGmt08, date.getHours()); } function testWeekDay() { var date = new Date(); var parser = new goog.i18n.DateTimeParse('EEEE, MM/dd/yyyy'); assertTrue(parser.parse('Wednesday, 08/16/2006', date) > 0); assertEquals(2006, date.getFullYear()); assertEquals(8 - 1, date.getMonth()); assertEquals(16, date.getDate()); assertTrue(parser.parse('Tuesday, 08/16/2006', date) == 0); assertTrue(parser.parse('Thursday, 08/16/2006', date) == 0); assertTrue(parser.parse('Wed, 08/16/2006', date) > 0); assertTrue(parser.parse('Wasdfed, 08/16/2006', date) == 0); date.setDate(25); parser = new goog.i18n.DateTimeParse('EEEE, MM/yyyy'); assertTrue(parser.parse('Wed, 09/2006', date) > 0); assertEquals(27, date.getDate()); date.setDate(30); assertTrue(parser.parse('Wed, 09/2006', date) > 0); assertEquals(27, date.getDate()); date.setDate(30); assertTrue(parser.parse('Mon, 09/2006', date) > 0); assertEquals(25, date.getDate()); } function testStrictParse() { var date = new Date(); var parser = new goog.i18n.DateTimeParse('yyyy/MM/dd'); assertTrue(parser.strictParse('2000/13/10', date) == 0); assertTrue(parser.strictParse('2000/13/40', date) == 0); assertTrue(parser.strictParse('2000/11/10', date) > 0); assertEquals(2000, date.getFullYear()); assertEquals(11 - 1, date.getMonth()); assertEquals(10, date.getDate()); parser = new goog.i18n.DateTimeParse('yy/MM/dd'); assertTrue(parser.strictParse('00/11/10', date) > 0); assertTrue(parser.strictParse('99/11/10', date) > 0); assertTrue(parser.strictParse('00/13/10', date) == 0); assertTrue(parser.strictParse('00/11/32', date) == 0); assertTrue(parser.strictParse('1900/11/2', date) > 0); parser = new goog.i18n.DateTimeParse('hh:mm'); assertTrue(parser.strictParse('15:44', date) > 0); assertTrue(parser.strictParse('25:44', date) == 0); assertTrue(parser.strictParse('15:64', date) == 0); // leap year parser = new goog.i18n.DateTimeParse('yy/MM/dd'); assertTrue(parser.strictParse('00/02/29', date) > 0); assertTrue(parser.strictParse('01/02/29', date) == 0); } function testEnglishQuarter() { var date = new Date(); var parser = new goog.i18n.DateTimeParse('QQQQ yyyy'); assertTrue(parser.parse('1st quarter 2009', date) > 0); assertEquals(2009, date.getFullYear()); assertEquals(0, date.getMonth()); assertEquals(1, date.getDate()); } function testEnglishShortQuarter() { var date = new Date(); var parser = new goog.i18n.DateTimeParse('yyyyQQ'); assertTrue(parser.parse('2006Q2', date) > 0); assertEquals(2006, date.getFullYear()); assertEquals(4 - 1, date.getMonth()); assertEquals(1, date.getDate()); } function testFrenchShortQuarter() { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_fr; var date = new Date(); try { var parser = new goog.i18n.DateTimeParse('yyyyQQ'); assertTrue(parser.parse('2009T3', date) > 0); assertEquals(2009, date.getFullYear()); assertEquals(7 - 1, date.getMonth()); assertEquals(1, date.getDate()); } catch (e) { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_en; throw e; } goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_en; } </script> </body> </html>