mirror of
https://github.com/tc39/test262.git
synced 2025-07-26 23:44:27 +02:00
Add tests for Intl.DateTimeFormat formatRange(ToParts) to check the behavior when startDate is the same as endDate (tc39/proposal-intl-DateTimeFormat-formatRange#19).
This commit is contained in:
parent
9ca13b1272
commit
22cdb74659
42
test/intl402/DateTimeFormat/prototype/formatRange/date-same-returns-single-date.js
vendored
Normal file
42
test/intl402/DateTimeFormat/prototype/formatRange/date-same-returns-single-date.js
vendored
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
// Copyright 2019 Google Inc. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
|
||||||
|
/*---
|
||||||
|
esid: sec-partitiondatetimerangepattern
|
||||||
|
description: >
|
||||||
|
When startDate is equal to endDate, the output should be a string equal
|
||||||
|
to the output of Intl.DateTimeFormat.prototype.format.
|
||||||
|
info: |
|
||||||
|
Intl.DateTimeFormat.prototype.formatRange ( startDate , endDate )
|
||||||
|
|
||||||
|
4. Let x be ? ToNumber(startDate).
|
||||||
|
5. Let y be ? ToNumber(endDate).
|
||||||
|
6. Return ? FormatDateTimeRange(dtf, x, y).
|
||||||
|
|
||||||
|
PartitionDateTimeRangePattern ( dateTimeFormat, x, y )
|
||||||
|
|
||||||
|
13. If dateFieldsPracticallyEqual is true, then
|
||||||
|
a. Let pattern be dateTimeFormat.[[Pattern]].
|
||||||
|
b. Let patternParts be PartitionPattern(pattern).
|
||||||
|
c. Let result be ? FormatDateTimePattern(dateTimeFormat, patternParts, tm1).
|
||||||
|
d. For each r in result do
|
||||||
|
i. Set r.[[Source]] to "shared".
|
||||||
|
e. Return result.
|
||||||
|
|
||||||
|
features: [Intl.DateTimeFormat-formatRange]
|
||||||
|
locale: [en-US]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
const date = new Date(2019, 7, 10, 1, 2, 3, 234);
|
||||||
|
|
||||||
|
let dtf = new Intl.DateTimeFormat("en", { year: "numeric", month: "short", day: "numeric" });
|
||||||
|
assert.sameValue(dtf.formatRange(date, date), dtf.format(date), "same output with date options");
|
||||||
|
|
||||||
|
dtf = new Intl.DateTimeFormat("en", { minute: "numeric", second: "numeric" });
|
||||||
|
assert.sameValue(dtf.formatRange(date, date), dtf.format(date), "same output with time options");
|
||||||
|
|
||||||
|
dtf = new Intl.DateTimeFormat("en", { month: "short", day: "numeric", minute: "numeric" });
|
||||||
|
assert.sameValue(dtf.formatRange(date, date), dtf.format(date), "same output with date-time options");
|
||||||
|
|
||||||
|
dtf = new Intl.DateTimeFormat("en", { dateStyle: "long", timeStyle: "short" });
|
||||||
|
assert.sameValue(dtf.formatRange(date, date), dtf.format(date), "same output with dateStyle/timeStyle");
|
57
test/intl402/DateTimeFormat/prototype/formatRangeToParts/date-same-returns-single-date.js
vendored
Normal file
57
test/intl402/DateTimeFormat/prototype/formatRangeToParts/date-same-returns-single-date.js
vendored
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
// Copyright 2019 Google Inc. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
|
||||||
|
/*---
|
||||||
|
esid: sec-partitiondatetimerangepattern
|
||||||
|
description: >
|
||||||
|
When startDate is equal to endDate, the output should be an Array of objects with the
|
||||||
|
same value for the `type` and `value` fields as in the Array returned by
|
||||||
|
Intl.DateTimeFormat.prototype.formatToParts.
|
||||||
|
info: |
|
||||||
|
Intl.DateTimeFormat.prototype.formatRangeToParts ( startDate , endDate )
|
||||||
|
|
||||||
|
4. Let x be ? ToNumber(startDate).
|
||||||
|
5. Let y be ? ToNumber(endDate).
|
||||||
|
6. Return ? FormatDateTimeRange(dtf, x, y).
|
||||||
|
|
||||||
|
PartitionDateTimeRangePattern ( dateTimeFormat, x, y )
|
||||||
|
|
||||||
|
13. If dateFieldsPracticallyEqual is true, then
|
||||||
|
a. Let pattern be dateTimeFormat.[[Pattern]].
|
||||||
|
b. Let patternParts be PartitionPattern(pattern).
|
||||||
|
c. Let result be ? FormatDateTimePattern(dateTimeFormat, patternParts, tm1).
|
||||||
|
d. For each r in result do
|
||||||
|
i. Set r.[[Source]] to "shared".
|
||||||
|
e. Return result.
|
||||||
|
|
||||||
|
features: [Intl.DateTimeFormat-formatRange]
|
||||||
|
locale: [en-US]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
function* zip(a, b) {
|
||||||
|
assert.sameValue(a.length, b.length);
|
||||||
|
for (let i = 0; i < a.length; ++i) {
|
||||||
|
yield [i, a[i], b[i]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function compare(actual, expected) {
|
||||||
|
for (const [i, actualEntry, expectedEntry] of zip(actual, expected)) {
|
||||||
|
assert.sameValue(actualEntry.type, expectedEntry.type, `type for entry ${i}`);
|
||||||
|
assert.sameValue(actualEntry.value, expectedEntry.value, `value for entry ${i}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const date = new Date(2019, 7, 10, 1, 2, 3, 234);
|
||||||
|
|
||||||
|
let dtf = new Intl.DateTimeFormat("en", { year: "numeric", month: "short", day: "numeric" });
|
||||||
|
compare(dtf.formatRange(date, date), dtf.format(date), "same output with date options");
|
||||||
|
|
||||||
|
dtf = new Intl.DateTimeFormat("en", { minute: "numeric", second: "numeric" });
|
||||||
|
compare(dtf.formatRange(date, date), dtf.format(date), "same output with time options");
|
||||||
|
|
||||||
|
dtf = new Intl.DateTimeFormat("en", { month: "short", day: "numeric", minute: "numeric" });
|
||||||
|
compare(dtf.formatRange(date, date), dtf.format(date), "same output with date-time options");
|
||||||
|
|
||||||
|
dtf = new Intl.DateTimeFormat("en", { dateStyle: "long", timeStyle: "short" });
|
||||||
|
compare(dtf.formatRange(date, date), dtf.format(date), "same output with dateStyle/timeStyle");
|
Loading…
x
Reference in New Issue
Block a user