diff options
Diffstat (limited to 'js/src/tests/test262/intl402/DateTimeFormat/prototype/formatToParts/fractionalSecondDigits.js')
-rw-r--r-- | js/src/tests/test262/intl402/DateTimeFormat/prototype/formatToParts/fractionalSecondDigits.js | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/js/src/tests/test262/intl402/DateTimeFormat/prototype/formatToParts/fractionalSecondDigits.js b/js/src/tests/test262/intl402/DateTimeFormat/prototype/formatToParts/fractionalSecondDigits.js new file mode 100644 index 0000000000..543dfb2274 --- /dev/null +++ b/js/src/tests/test262/intl402/DateTimeFormat/prototype/formatToParts/fractionalSecondDigits.js @@ -0,0 +1,69 @@ +// Copyright 2019 Google Inc. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-createdatetimeformat +description: Checks basic handling of fractionalSecondDigits. +features: [Intl.DateTimeFormat-fractionalSecondDigits] +locale: [en-US] +---*/ + +const d1 = new Date(2019, 7, 10, 1, 2, 3, 234); +const d2 = new Date(2019, 7, 10, 1, 2, 3, 567); + +function assertParts(parts, minute, second, fractionalSecond, message) { + if (fractionalSecond === null) { + assert.sameValue(parts.length, 3, `length should be 3, ${message}`); + } else { + assert.sameValue(parts.length, 5, `length should be 5, ${message}`); + } + assert.sameValue(parts[0].value, minute, `minute part value. ${message}`); + assert.sameValue(parts[0].type, 'minute', `minute part type. ${message}`); + assert.sameValue(parts[1].value, ':', `literal part value. ${message}`); + assert.sameValue(parts[1].type, 'literal', `literal part type. ${message}`); + assert.sameValue(parts[2].value, second, `second part value. ${message}`); + assert.sameValue(parts[2].type, 'second', `second part type. ${message}`); + if (fractionalSecond !== null) { + assert.sameValue(parts[3].value, '.', `literal part value. ${message}`); + assert.sameValue(parts[3].type, 'literal', `literal part type. ${message}`); + assert.sameValue(parts[4].value, fractionalSecond, `fractionalSecond part value. ${message}`); + assert.sameValue(parts[4].type, 'fractionalSecond', `fractionalSecond part type. ${message}`); + } +} + +assert.throws(RangeError, () => { + new Intl.DateTimeFormat( + 'en', { minute: "numeric", second: "numeric", fractionalSecondDigits: 0}); +}, "fractionalSecondDigits 0 should throw RangeError for out of range"); + +assert.throws(RangeError, () => { + new Intl.DateTimeFormat( + 'en', { minute: "numeric", second: "numeric", fractionalSecondDigits: 4}); +}, "fractionalSecondDigits 4 should throw RangeError for out of range"); + +let dtf = new Intl.DateTimeFormat( + 'en', { minute: "numeric", second: "numeric"}); +assertParts(dtf.formatToParts(d1), "02", "03", null, "no fractionalSecondDigits round down"); +assertParts(dtf.formatToParts(d2), "02", "03", null, "no fractionalSecondDigits round down"); + +dtf = new Intl.DateTimeFormat( + 'en', { minute: "numeric", second: "numeric", fractionalSecondDigits: undefined}); +assertParts(dtf.formatToParts(d1), "02", "03", null, "no fractionalSecondDigits round down"); +assertParts(dtf.formatToParts(d2), "02", "03", null, "no fractionalSecondDigits round down"); + +dtf = new Intl.DateTimeFormat( + 'en', { minute: "numeric", second: "numeric", fractionalSecondDigits: 1}); +assertParts(dtf.formatToParts(d1), "02", "03", "2", "1 fractionalSecondDigits round down"); +assertParts(dtf.formatToParts(d2), "02", "03", "5", "1 fractionalSecondDigits round down"); + +dtf = new Intl.DateTimeFormat( + 'en', { minute: "numeric", second: "numeric", fractionalSecondDigits: 2}); +assertParts(dtf.formatToParts(d1), "02", "03", "23", "2 fractionalSecondDigits round down"); +assertParts(dtf.formatToParts(d2), "02", "03", "56", "2 fractionalSecondDigits round down"); + +dtf = new Intl.DateTimeFormat( + 'en', { minute: "numeric", second: "numeric", fractionalSecondDigits: 3}); +assertParts(dtf.formatToParts(d1), "02", "03", "234", "3 fractionalSecondDigits round down"); +assertParts(dtf.formatToParts(d2), "02", "03", "567", "3 fractionalSecondDigits round down"); + +reportCompare(0, 0); |