From d62318319fa931083e744ca50ca5dc79269a4dd5 Mon Sep 17 00:00:00 2001 From: Richard Gibson Date: Tue, 2 Apr 2019 14:02:35 -0400 Subject: [PATCH] Add tests for string representations of Date objects with negative years (#2114) * Add tests for string representations of Date objects with negative years Ref https://github.com/tc39/ecma262/issues/1035 Ref https://github.com/tc39/ecma262/issues/1407 --- .../prototype/toDateString/negative-year.js | 33 ++++++++++++++++++ .../Date/prototype/toString/negative-year.js | 34 +++++++++++++++++++ .../prototype/toUTCString/negative-year.js | 33 ++++++++++++++++++ 3 files changed, 100 insertions(+) create mode 100644 test/built-ins/Date/prototype/toDateString/negative-year.js create mode 100644 test/built-ins/Date/prototype/toString/negative-year.js create mode 100644 test/built-ins/Date/prototype/toUTCString/negative-year.js diff --git a/test/built-ins/Date/prototype/toDateString/negative-year.js b/test/built-ins/Date/prototype/toDateString/negative-year.js new file mode 100644 index 0000000000..1960c94b80 --- /dev/null +++ b/test/built-ins/Date/prototype/toDateString/negative-year.js @@ -0,0 +1,33 @@ +// Copyright (C) 2018 Richard Gibson. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +description: > + Negative years must be serialized with at least four digits +esid: sec-date.prototype.todatestring +info: | + Date.prototype.toDateString ( ) + + 5. Return DateString(_t_). +---*/ + +var negative1DigitYearDateString = (new Date('-000001-07-01T00:00Z')).toDateString(); +var negative2DigitYearDateString = (new Date('-000012-07-01T00:00Z')).toDateString(); +var negative3DigitYearDateString = (new Date('-000123-07-01T00:00Z')).toDateString(); +var negative4DigitYearDateString = (new Date('-001234-07-01T00:00Z')).toDateString(); +var negative5DigitYearDateString = (new Date('-012345-07-01T00:00Z')).toDateString(); +var negative6DigitYearDateString = (new Date('-123456-07-01T00:00Z')).toDateString(); + +// Date.prototype.toDateString emits values like "Fri Mar 28 2019". +// Extract and verify just the year. +assert.sameValue(negative1DigitYearDateString.split(' ')[3], '-0001', + 'Date.prototype.toDateString serializes year -1 to "-0001"'); +assert.sameValue(negative2DigitYearDateString.split(' ')[3], '-0012', + 'Date.prototype.toDateString serializes year -12 to "-0012"'); +assert.sameValue(negative3DigitYearDateString.split(' ')[3], '-0123', + 'Date.prototype.toDateString serializes year -123 to "-0123"'); +assert.sameValue(negative4DigitYearDateString.split(' ')[3], '-1234', + 'Date.prototype.toDateString serializes year -1234 to "-1234"'); +assert.sameValue(negative5DigitYearDateString.split(' ')[3], '-12345', + 'Date.prototype.toDateString serializes year -12345 to "-12345"'); +assert.sameValue(negative6DigitYearDateString.split(' ')[3], '-123456', + 'Date.prototype.toDateString serializes year -123456 to "-123456"'); diff --git a/test/built-ins/Date/prototype/toString/negative-year.js b/test/built-ins/Date/prototype/toString/negative-year.js new file mode 100644 index 0000000000..1cf7ba54cc --- /dev/null +++ b/test/built-ins/Date/prototype/toString/negative-year.js @@ -0,0 +1,34 @@ +// Copyright (C) 2018 Richard Gibson. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +description: > + Negative years must be serialized with at least four digits +esid: sec-date.prototype.tostring +info: | + Date.prototype.toString ( ) + + 2. Return ToDateString(_tv_). +---*/ + +var negative1DigitYearToString = (new Date('-000001-07-01T00:00Z')).toString(); +var negative2DigitYearToString = (new Date('-000012-07-01T00:00Z')).toString(); +var negative3DigitYearToString = (new Date('-000123-07-01T00:00Z')).toString(); +var negative4DigitYearToString = (new Date('-001234-07-01T00:00Z')).toString(); +var negative5DigitYearToString = (new Date('-012345-07-01T00:00Z')).toString(); +var negative6DigitYearToString = (new Date('-123456-07-01T00:00Z')).toString(); + +// Date.prototype.toString emits values like +// "Fri Mar 28 2019 10:23:42 GMT-0400 (Eastern Daylight Time)". +// Extract and verify just the year. +assert.sameValue(negative1DigitYearToString.split(' ')[3], '-0001', + 'Date.prototype.toString serializes year -1 to "-0001"'); +assert.sameValue(negative2DigitYearToString.split(' ')[3], '-0012', + 'Date.prototype.toString serializes year -12 to "-0012"'); +assert.sameValue(negative3DigitYearToString.split(' ')[3], '-0123', + 'Date.prototype.toString serializes year -123 to "-0123"'); +assert.sameValue(negative4DigitYearToString.split(' ')[3], '-1234', + 'Date.prototype.toString serializes year -1234 to "-1234"'); +assert.sameValue(negative5DigitYearToString.split(' ')[3], '-12345', + 'Date.prototype.toString serializes year -12345 to "-12345"'); +assert.sameValue(negative6DigitYearToString.split(' ')[3], '-123456', + 'Date.prototype.toString serializes year -123456 to "-123456"'); diff --git a/test/built-ins/Date/prototype/toUTCString/negative-year.js b/test/built-ins/Date/prototype/toUTCString/negative-year.js new file mode 100644 index 0000000000..5a808740f3 --- /dev/null +++ b/test/built-ins/Date/prototype/toUTCString/negative-year.js @@ -0,0 +1,33 @@ +// Copyright (C) 2018 Richard Gibson. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +description: > + Negative years must be serialized with at least four digits +esid: sec-date.prototype.toutcstring +info: | + Date.prototype.toUTCString ( ) + + 10. Return the string-concatenation of _weekday_, `","`, the code unit 0x0020 (SPACE), _day_, the code unit 0x0020 (SPACE), _month_, the code unit 0x0020 (SPACE), _yearSign_, _year_, the code unit 0x0020 (SPACE), and TimeString(_tv_). +---*/ + +var negative1DigitYearToUTCString = (new Date('-000001-07-01T00:00Z')).toUTCString(); +var negative2DigitYearToUTCString = (new Date('-000012-07-01T00:00Z')).toUTCString(); +var negative3DigitYearToUTCString = (new Date('-000123-07-01T00:00Z')).toUTCString(); +var negative4DigitYearToUTCString = (new Date('-001234-07-01T00:00Z')).toUTCString(); +var negative5DigitYearToUTCString = (new Date('-012345-07-01T00:00Z')).toUTCString(); +var negative6DigitYearToUTCString = (new Date('-123456-07-01T00:00Z')).toUTCString(); + +// Date.prototype.toUTCString emits values like "Thu, 28 Mar 2019 10:23:42 GMT". +// Extract and verify just the year. +assert.sameValue(negative1DigitYearToUTCString.split(' ')[3], '-0001', + 'Date.prototype.toUTCString serializes year -1 to "-0001"'); +assert.sameValue(negative2DigitYearToUTCString.split(' ')[3], '-0012', + 'Date.prototype.toUTCString serializes year -12 to "-0012"'); +assert.sameValue(negative3DigitYearToUTCString.split(' ')[3], '-0123', + 'Date.prototype.toUTCString serializes year -123 to "-0123"'); +assert.sameValue(negative4DigitYearToUTCString.split(' ')[3], '-1234', + 'Date.prototype.toUTCString serializes year -1234 to "-1234"'); +assert.sameValue(negative5DigitYearToUTCString.split(' ')[3], '-12345', + 'Date.prototype.toUTCString serializes year -12345 to "-12345"'); +assert.sameValue(negative6DigitYearToUTCString.split(' ')[3], '-123456', + 'Date.prototype.toUTCString serializes year -123456 to "-123456"');