|
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
|
2 /* This Source Code Form is subject to the terms of the Mozilla Public |
|
3 * License, v. 2.0. If a copy of the MPL was not distributed with this |
|
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
|
5 |
|
6 //----------------------------------------------------------------------------- |
|
7 var BUGNUMBER = 398485; |
|
8 var summary = 'Date.prototype.toLocaleString should not clamp year'; |
|
9 var actual = ''; |
|
10 var expect = ''; |
|
11 |
|
12 |
|
13 //----------------------------------------------------------------------------- |
|
14 test(); |
|
15 //----------------------------------------------------------------------------- |
|
16 |
|
17 function test() |
|
18 { |
|
19 enterFunc ('test'); |
|
20 printBugNumber(BUGNUMBER); |
|
21 printStatus (summary); |
|
22 |
|
23 var d; |
|
24 var y; |
|
25 var l; |
|
26 var maxms = 8640000000000000; |
|
27 |
|
28 d = new Date(-maxms ); |
|
29 y = d.getFullYear(); |
|
30 |
|
31 actual = y; |
|
32 expect = -271821; |
|
33 reportCompare(expect, actual, summary + ': check year'); |
|
34 |
|
35 l = d.toLocaleString(); |
|
36 print(l); |
|
37 if (this.hasOwnProperty("Intl")) { |
|
38 // ECMA-402 specifies that toLocaleString uses a proleptic Gregorian |
|
39 // calender without year 0. |
|
40 // Also, localized strings usually use era indicators such as "BC" |
|
41 // instead of minus signs. |
|
42 expect = Math.abs(y - 1) + ''; |
|
43 } else { |
|
44 // ECMA-262 up to edition 5.1 didn't specify toLocaleString; |
|
45 // the previous implementation assumed a calendar with year 0 and used |
|
46 // minus sign. |
|
47 expect = y + ''; |
|
48 } |
|
49 actual = l.match(/-?[0-9]{3,}/) + ''; |
|
50 reportCompare(expect, actual, summary + ': check toLocaleString'); |
|
51 |
|
52 d = new Date(maxms ); |
|
53 y = d.getFullYear(); |
|
54 l = d.toLocaleString(); |
|
55 print(l); |
|
56 |
|
57 actual = y; |
|
58 expect = 275760; |
|
59 reportCompare(expect, actual, summary + ': check year'); |
|
60 |
|
61 actual = l.match(new RegExp(y)) + ''; |
|
62 expect = y + ''; |
|
63 reportCompare(expect, actual, summary + ': check toLocaleString'); |
|
64 |
|
65 exitFunc ('test'); |
|
66 } |