michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: //----------------------------------------------------------------------------- michael@0: var BUGNUMBER = 291494; michael@0: var summary = 'Date.prototype.toLocaleFormat extension'; michael@0: var actual = ''; michael@0: var expect = ''; michael@0: var temp; michael@0: michael@0: /* michael@0: * SpiderMonkey only. michael@0: * michael@0: * When the output of toLocaleFormat exceeds 100 bytes toLocaleFormat michael@0: * defaults to using toString to produce the result. michael@0: */ michael@0: michael@0: enterFunc ('test'); michael@0: printBugNumber(BUGNUMBER); michael@0: printStatus (summary); michael@0: michael@0: var date = new Date("06/05/2005 00:00:00 GMT-0000"); michael@0: michael@0: expect = date.getTimezoneOffset() > 0 ? 'Sat' : 'Sun'; michael@0: actual = date.toLocaleFormat('%a'); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("%a")'); michael@0: michael@0: expect = date.getTimezoneOffset() > 0 ? 'Saturday' : 'Sunday'; michael@0: actual = date.toLocaleFormat('%A'); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("%A")'); michael@0: michael@0: expect = 'Jun'; michael@0: actual = date.toLocaleFormat('%b'); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("%b")'); michael@0: michael@0: expect = 'June'; michael@0: actual = date.toLocaleFormat('%B'); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("%B")'); michael@0: michael@0: expect = (date.getTimezoneOffset() > 0) ? '04' : '05'; michael@0: actual = date.toLocaleFormat('%d'); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("%d")'); michael@0: michael@0: expect = '0'; michael@0: actual = String((Number(date.toLocaleFormat('%H')) + michael@0: date.getTimezoneOffset()/60) % 24); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat(%H)'); michael@0: michael@0: expect = '12'; michael@0: actual = String(Number(date.toLocaleFormat('%I')) + michael@0: date.getTimezoneOffset()/60); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat(%I)'); michael@0: michael@0: expect = String(155 + ((date.getTimezoneOffset() > 0) ? 0 : 1)); michael@0: actual = date.toLocaleFormat('%j'); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("%j")'); michael@0: michael@0: expect = '06'; michael@0: actual = date.toLocaleFormat('%m'); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("%m")'); michael@0: michael@0: expect = '00'; michael@0: actual = date.toLocaleFormat('%M'); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("%M")'); michael@0: michael@0: expect = true; michael@0: temp = date.toLocaleFormat('%p'); michael@0: actual = temp == 'AM' || date.toLocaleFormat('%p') == 'PM'; michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("%p") is AM or PM'); michael@0: michael@0: expect = '00'; michael@0: actual = date.toLocaleFormat('%S'); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("%S")'); michael@0: michael@0: expect = String(22 + ((date.getTimezoneOffset() > 0) ? 0 : 1)); michael@0: actual = date.toLocaleFormat('%U'); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("%U")'); michael@0: michael@0: expect = String((6 + ((date.getTimezoneOffset() > 0) ? 0 : 1))%7); michael@0: actual = date.toLocaleFormat('%w'); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("%w")'); michael@0: michael@0: expect = '22'; michael@0: actual = date.toLocaleFormat('%W'); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("%W")'); michael@0: michael@0: expect = '05'; michael@0: actual = date.toLocaleFormat('%y'); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("%y")'); michael@0: michael@0: expect = '2005'; michael@0: actual = date.toLocaleFormat('%Y'); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("%Y")'); michael@0: michael@0: expect = '%'; michael@0: actual = date.toLocaleFormat('%%'); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("%%")'); michael@0: michael@0: michael@0: expect = '1899 99'; michael@0: temp='%Y %y'; michael@0: actual = new Date(0, 0, 0, 13, 14, 15, 0).toLocaleFormat(temp); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")'); michael@0: michael@0: expect = '1899189918991899189918991899189918991899189918991899189918991899189918991899189918991899'; michael@0: temp = '%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y'; michael@0: actual = new Date(0, 0, 0, 13, 14, 15, 0).toLocaleFormat(temp); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")'); michael@0: michael@0: expect = 'xxx189918991899189918991899189918991899189918991899189918991899189918991899189918991899189918991899'; michael@0: temp = 'xxx%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y'; michael@0: actual = new Date(0, 0, 0, 13, 14, 15, 0).toLocaleFormat(temp); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")'); michael@0: michael@0: expect = new Date(0, 0, 0, 13, 14, 15, 0).toString(); michael@0: temp = 'xxxx%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y'; michael@0: actual = new Date(0, 0, 0, 13, 14, 15, 0).toLocaleFormat(temp); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")'); michael@0: michael@0: expect = 'xxxx189918991899189918991899189918991899'; michael@0: temp = 'xxxx%Y%Y%Y%Y%Y%Y%Y%Y%Y'; michael@0: actual = new Date(0, 0, 0, 13, 14, 15, 0).toLocaleFormat(temp); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")'); michael@0: michael@0: michael@0: expect = '-51 49'; michael@0: temp = '%Y %y'; michael@0: actual = new Date(-51, 0).toLocaleFormat(temp); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")'); michael@0: michael@0: expect = '-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51'; michael@0: temp = '%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y'; michael@0: actual = new Date(-51, 0).toLocaleFormat(temp); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")'); michael@0: michael@0: expect = 'xxx-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51'; michael@0: temp = 'xxx%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y'; michael@0: actual = new Date(-51, 0).toLocaleFormat(temp); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")'); michael@0: michael@0: expect = new Date(-51, 0).toString(); michael@0: temp = 'xxxx%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y'; michael@0: actual = new Date(-51, 0).toLocaleFormat(temp); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")'); michael@0: michael@0: michael@0: expect = '1851 51'; michael@0: temp = '%Y %y'; michael@0: actual = new Date(1851, 0).toLocaleFormat(temp); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")'); michael@0: michael@0: expect = '1851185118511851185118511851185118511851185118511851185118511851185118511851185118511851'; michael@0: temp = '%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y'; michael@0: actual = new Date(1851, 0).toLocaleFormat(temp); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")'); michael@0: michael@0: expect = 'xxx185118511851185118511851185118511851185118511851185118511851185118511851185118511851185118511851'; michael@0: temp = 'xxx%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y'; michael@0: actual = new Date(1851, 0).toLocaleFormat(temp); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")'); michael@0: michael@0: expect = new Date(1851, 0).toString(); michael@0: temp = 'xxxx%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y'; michael@0: actual = new Date(1851, 0).toLocaleFormat(temp); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")'); michael@0: michael@0: michael@0: expect = '-1 99'; michael@0: temp = '%Y %y'; michael@0: actual = new Date(-1, 0).toLocaleFormat(temp); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")'); michael@0: michael@0: expect = '-100 00'; michael@0: temp = '%Y %y'; michael@0: actual = new Date(-100, 0).toLocaleFormat(temp); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")'); michael@0: michael@0: expect = '1900 00'; michael@0: temp = '%Y %y'; michael@0: actual = new Date(0, 0).toLocaleFormat(temp); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")'); michael@0: michael@0: expect = '1901 01'; michael@0: temp = '%Y %y'; michael@0: actual = new Date(1, 0).toLocaleFormat(temp); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")'); michael@0: michael@0: expect = '1970 70'; michael@0: temp = '%Y %y'; michael@0: actual = new Date(1970, 0).toLocaleFormat(temp); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")'); michael@0: michael@0: michael@0: expect = new Date(32767, 0).toString(); michael@0: temp = 'xxxx%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y'; michael@0: actual = new Date(32767, 0).toLocaleFormat(temp); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")'); michael@0: michael@0: expect = '32767327673276732767327673276732767327673276732767327673276732767327673276732767327673276732767'; michael@0: temp = '%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y'; michael@0: actual = new Date(32767, 0).toLocaleFormat(temp); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")'); michael@0: michael@0: expect = 'xxxx32767327673276732767327673276732767327673276732767327673276732767327673276732767327673276732767'; michael@0: temp = 'xxxx%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y'; michael@0: actual = new Date(32767, 0).toLocaleFormat(temp); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")'); michael@0: michael@0: expect = new Date(32767, 0).toString(); michael@0: temp = 'xxxxx%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y'; michael@0: actual = new Date(32767, 0).toLocaleFormat(temp); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")'); michael@0: michael@0: michael@0: expect = '-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999'; michael@0: temp = '%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y'; michael@0: actual = new Date(-9999, 0).toLocaleFormat(temp); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")'); michael@0: michael@0: expect = 'xxxx-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999'; michael@0: temp = 'xxxx%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y'; michael@0: actual = new Date(-9999, 0).toLocaleFormat(temp); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")'); michael@0: michael@0: expect = new Date(-9999, 0).toString(); michael@0: temp = 'xxxx%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y'; michael@0: actual = new Date(-9999, 0).toLocaleFormat(temp); michael@0: reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")');