summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/intl402/RelativeTimeFormat/prototype/formatToParts/result-type.js
blob: 127642a5ef5ec1ff96a92cc03edec3a0862a71e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
// 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.formatToParts
description: Checks the handling of plural unit arguments to Intl.RelativeTimeFormat.prototype.formatToParts().
info: |
    FormatRelativeTimeToParts ( relativeTimeFormat, value, unit )

    3. Let n be 0.
    4. For each part in parts, do:
        a. Let O be ObjectCreate(%ObjectPrototype%).
        b. Perform ! CreateDataPropertyOrThrow(O, "type", part.[[Type]]).
        c. Perform ! CreateDataPropertyOrThrow(O, "value", part.[[Value]]).
        d. If part has a [[Unit]] field,
            i. Perform ! CreateDataPropertyOrThrow(O, "unit", part.[[Unit]]).
        e. Perform ! CreateDataPropertyOrThrow(result, ! ToString(n), O).
        f. Increment n by 1.

features: [Intl.RelativeTimeFormat]
includes: [propertyHelper.js]
---*/

const rtf = new Intl.RelativeTimeFormat("en-US");

assert.sameValue(typeof rtf.formatToParts, "function", "formatToParts should be supported");

const parts = rtf.formatToParts(3, "second");

assert.sameValue(Object.getPrototypeOf(parts), Array.prototype, "parts: prototype");
assert.sameValue(Array.isArray(parts), true, "parts: isArray");
assert.sameValue(parts.length, 3, "parts: length");

assert.sameValue(Object.getPrototypeOf(parts[0]), Object.prototype, "parts[0]: prototype");
verifyProperty(parts[0], "type", {
  value: "literal",
  writable: true,
  enumerable: true,
  configurable: true,
});
verifyProperty(parts[0], "value", {
  value: "in ",
  writable: true,
  enumerable: true,
  configurable: true,
});


assert.sameValue(Object.getPrototypeOf(parts[1]), Object.prototype, "parts[1]: prototype");
verifyProperty(parts[1], "type", {
  value: "integer",
  writable: true,
  enumerable: true,
  configurable: true,
});
verifyProperty(parts[1], "value", {
  value: "3",
  writable: true,
  enumerable: true,
  configurable: true,
});
verifyProperty(parts[1], "unit", {
  value: "second",
  writable: true,
  enumerable: true,
  configurable: true,
});


assert.sameValue(Object.getPrototypeOf(parts[2]), Object.prototype, "parts[2]: prototype");
verifyProperty(parts[2], "type", {
  value: "literal",
  writable: true,
  enumerable: true,
  configurable: true,
});
verifyProperty(parts[2], "value", {
  value: " seconds",
  writable: true,
  enumerable: true,
  configurable: true,
});

reportCompare(0, 0);