summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/intl402/RelativeTimeFormat/prototype/format/en-us-numeric-auto.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/test262/intl402/RelativeTimeFormat/prototype/format/en-us-numeric-auto.js')
-rw-r--r--js/src/tests/test262/intl402/RelativeTimeFormat/prototype/format/en-us-numeric-auto.js87
1 files changed, 87 insertions, 0 deletions
diff --git a/js/src/tests/test262/intl402/RelativeTimeFormat/prototype/format/en-us-numeric-auto.js b/js/src/tests/test262/intl402/RelativeTimeFormat/prototype/format/en-us-numeric-auto.js
new file mode 100644
index 0000000000..ef84a32934
--- /dev/null
+++ b/js/src/tests/test262/intl402/RelativeTimeFormat/prototype/format/en-us-numeric-auto.js
@@ -0,0 +1,87 @@
+// Copyright 2018 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-Intl.RelativeTimeFormat.prototype.format
+description: Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in English.
+features: [Intl.RelativeTimeFormat]
+locale: [en-US]
+---*/
+
+const units = [
+ "second",
+ "minute",
+ "hour",
+ "day",
+ "week",
+ "month",
+ "quarter",
+ "year",
+];
+
+const rtf = new Intl.RelativeTimeFormat("en-US", { "numeric": "auto" });
+
+assert.sameValue(typeof rtf.format, "function", "format should be supported");
+
+// https://www.unicode.org/cldr/charts/33/summary/en.html#1530
+const exceptions = {
+ "year": {
+ "-1": "last year",
+ "0": "this year",
+ "1": "next year",
+ },
+ "quarter": {
+ "-1": "last quarter",
+ "0": "this quarter",
+ "1": "next quarter",
+ },
+ "month": {
+ "-1": "last month",
+ "0": "this month",
+ "1": "next month",
+ },
+ "week": {
+ "-1": "last week",
+ "0": "this week",
+ "1": "next week",
+ },
+ "day": {
+ "-1": "yesterday",
+ "0": "today",
+ "1": "tomorrow",
+ },
+ "hour": {
+ "-1": "1 hour ago",
+ '0': 'this hour',
+ "1": "in 1 hour",
+ },
+ "minute": {
+ "-1": "1 minute ago",
+ '0': 'this minute',
+ "1": "in 1 minute",
+ },
+ "second": {
+ "-1": "1 second ago",
+ "0": "now",
+ "1": "in 1 second",
+ },
+};
+
+for (const unit of units) {
+ const expected = unit in exceptions
+ ? [exceptions[unit]["1"], exceptions[unit]["0"], exceptions[unit]["0"], exceptions[unit]["-1"]]
+ : [`in 1 ${unit}`, `in 0 ${unit}s`, `0 ${unit}s ago`, `1 ${unit} ago`];
+
+ assert.sameValue(rtf.format(1000, unit), `in 1,000 ${unit}s`);
+ assert.sameValue(rtf.format(10, unit), `in 10 ${unit}s`);
+ assert.sameValue(rtf.format(2, unit), `in 2 ${unit}s`);
+ assert.sameValue(rtf.format(1, unit), expected[0]);
+ assert.sameValue(rtf.format(0, unit), expected[1]);
+ assert.sameValue(rtf.format(-0, unit), expected[2]);
+ assert.sameValue(rtf.format(-1, unit), expected[3]);
+ assert.sameValue(rtf.format(-2, unit), `2 ${unit}s ago`);
+ assert.sameValue(rtf.format(-10, unit), `10 ${unit}s ago`);
+ assert.sameValue(rtf.format(-1000, unit), `1,000 ${unit}s ago`);
+}
+
+reportCompare(0, 0);