UNPKG

sku-pg

Version:

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

767 lines (610 loc) 25.2 kB
<!DOCTYPE html> <html> <!-- Copyright 2006 The Closure Library Authors. All Rights Reserved. Use of this source code is governed by the Apache License, Version 2.0. See the COPYING file for details. --> <!-- All Rights Reserved. --> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>Closure Unit Tests - goog.i18n.DateTimeParse</title> <meta charset="utf-8"/> <script src="../base.js"></script> <script> goog.require('goog.date.Date'); goog.require('goog.i18n.DateTimeFormat'); goog.require('goog.i18n.DateTimeParse'); goog.require('goog.i18n.DateTimeSymbols'); goog.require('goog.i18n.DateTimeSymbols_en'); goog.require('goog.i18n.DateTimeSymbols_fr'); goog.require('goog.i18n.DateTimeSymbols_zh'); goog.require('goog.testing.ExpectedFailures'); goog.require('goog.testing.jsunit'); goog.require('goog.userAgent'); goog.require('goog.userAgent.product'); </script> </head> <body> <script> goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_en; var expectedFailures = new goog.testing.ExpectedFailures(); function tearDown() { expectedFailures.handleTearDown(); } 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() { // 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 time being parsed and the time when this program runs. // For example, if the program is run at 2006/03/03 12:12:12, the following // code should work. // assertTrue(parser.parse('01/01/26 00:00:00:001', date) > 0); // assertTrue(date.getFullYear() == 2026 - 1900); // assertTrue(parser.parse('12/30/26 23:59:59:999', date) > 0); // assertTrue(date.getFullYear() == 1926 - 1900); // Since this test can run in any time, some logic needed here. var futureDate = new Date(); futureDate.setFullYear(futureDate.getFullYear() + 100 - goog.i18n.DateTimeParse.ambiguousYearCenturyStart); var ambiguousYear = futureDate.getFullYear() % 100; var parser = new goog.i18n.DateTimeParse('MM/dd/yy HH:mm:ss:SSS'); var date = new Date(); var str = '01/01/' + ambiguousYear + ' 00:00:00:001'; assertTrue(parser.parse(str, date) > 0); assertEquals(futureDate.getFullYear(), date.getFullYear()); str = '12/31/' + ambiguousYear + ' 23:59:59:999'; assertTrue(parser.parse(str, date) > 0); assertEquals(futureDate.getFullYear(), date.getFullYear() + 100); // Test the ability to move the disambiguation century goog.i18n.DateTimeParse.ambiguousYearCenturyStart = 60; futureDate = new Date() futureDate.setFullYear(futureDate.getFullYear() + 100 - goog.i18n.DateTimeParse.ambiguousYearCenturyStart); ambiguousYear = futureDate.getFullYear() % 100; var str = '01/01/' + ambiguousYear + ' 00:00:00:001'; assertTrue(parser.parse(str, date) > 0); assertEquals(futureDate.getFullYear(), date.getFullYear()); str = '12/31/' + ambiguousYear + ' 23:59:59:999'; assertTrue(parser.parse(str, date) > 0); assertEquals(futureDate.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 testGoogDateParsing() { var date = new goog.date.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()); } 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'); // Fails in Safari4/Chrome Winxp because of infrastructure issues, temporarily // disabled. See b/4274778. expectedFailures.expectFailureFor(goog.userAgent.WEBKIT); try { 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()); } catch(e) { expectedFailures.handleException(e); } } function testChineseDate() { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_zh; // Javascript month start from 0, July is 7 - 1 var date = new Date(2006, 7 - 1, 24, 12, 12, 12, 0); var formatter = new goog.i18n.DateTimeFormat( goog.i18n.DateTimeFormat.Format.FULL_DATE); date_str = formatter.format(date); var parser = new goog.i18n.DateTimeParse( goog.i18n.DateTimeFormat.Format.FULL_DATE); parser.parse(date_str, 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('GMT-07:00\u4E0B\u534803:26:28', date); // Fails in Safari4/Chrome Winxp because of infrastructure issues, temporarily // disabled. See b/4274778. expectedFailures.expectFailureFor(goog.userAgent.WEBKIT); try { assertEquals(22, (24 + date.getHours() + date.getTimezoneOffset()/60) % 24); assertEquals(26, date.getMinutes()); assertEquals(28, date.getSeconds()); } catch(e) { expectedFailures.handleException(e); } goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_en; } // For languages with goog.i18n.DateTimeSymbols.ZERODIGIT defined, the int // digits are localized by the locale in datetimeformat.js. This test case is // for parsing dates with such native digits. function testDatesWithNativeDigits() { // Language Arabic is one example with // goog.i18n.DateTimeSymbols.ZERODIGIT defined. goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_fa; // Javascript month starts from 0, July is 7 - 1 var date = new Date(2006, 7 - 1, 24, 12, 12, 12, 0); var formatter = new goog.i18n.DateTimeFormat( goog.i18n.DateTimeFormat.Format.FULL_DATE); date_str = formatter.format(date); var parser = new goog.i18n.DateTimeParse( goog.i18n.DateTimeFormat.Format.FULL_DATE); parser.parse(date_str, date); assertEquals(2006, date.getFullYear()); assertEquals(7 - 1, date.getMonth()); assertEquals(24, date.getDate()); date = new Date(2006, 7 - 1, 24); formatter = new goog.i18n.DateTimeFormat( goog.i18n.DateTimeFormat.Format.SHORT_DATE); date_str = formatter.format(date); parser = new goog.i18n.DateTimeParse( goog.i18n.DateTimeFormat.Format.SHORT_DATE); parser.parse(date_str, date); assertEquals(2006, date.getFullYear()); assertEquals(7 - 1, date.getMonth()); assertEquals(24, date.getDate()); date = new Date(); parser = new goog.i18n.DateTimeParse('y/MM/dd H:mm:ss٫SS'); assertTrue(parser.parse('۲۰۰۶/۰۷/۲۷ ۱۳:۱۰:۱۰٫۲۵', date) > 0); assertEquals(2006, date.getFullYear()); assertEquals(6, date.getMonth()); assertEquals(27, date.getDate()); 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'); // Fails in Safari4/Chrome Winxp because of infrastructure issues, temporarily // disabled. See b/4274778. expectedFailures.expectFailureFor(goog.userAgent.WEBKIT); try { assertTrue(parser.parse('1st quarter 2009', date) > 0); assertEquals(2009, date.getFullYear()); assertEquals(0, date.getMonth()); assertEquals(1, date.getDate()); } catch(e) { expectedFailures.handleException(e); } } function testEnglishShortQuarter() { var date = new Date(); var parser = new goog.i18n.DateTimeParse('yyyyQQ'); // Fails in Safari4/Chrome Winxp because of infrastructure issues, temporarily // disabled. See b/4274778. expectedFailures.expectFailureFor(goog.userAgent.WEBKIT); try { assertTrue(parser.parse('2006Q2', date) > 0); assertEquals(2006, date.getFullYear()); assertEquals(4 - 1, date.getMonth()); assertEquals(1, date.getDate()); } catch(e) { expectedFailures.handleException(e); } } 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; } function testDateTime() { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_en; var date_org = new Date(2006, 7 - 1, 24, 17, 21, 42, 0); var formatter = new goog.i18n.DateTimeFormat( goog.i18n.DateTimeFormat.Format.MEDIUM_DATETIME); date_str = formatter.format(date_org); var parser = new goog.i18n.DateTimeParse( goog.i18n.DateTimeFormat.Format.MEDIUM_DATETIME); var date_parsed = new Date(); parser.parse(date_str, date_parsed); assertEquals(date_org.getFullYear(), date_parsed.getFullYear()); assertEquals(date_org.getMonth(), date_parsed.getMonth()); assertEquals(date_org.getDate(), date_parsed.getDate()); assertEquals(date_org.getHours(), date_parsed.getHours()); assertEquals(date_org.getMinutes(), date_parsed.getMinutes()); assertEquals(date_org.getSeconds(), date_parsed.getSeconds()); } </script> </body> </html>