summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/intl402/DurationFormat/prototype/formatToParts/negative-duration-formatToParts-style-default-en.js
blob: bfc182c34b40a668c1c921484ef8da7d3a10c62f (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
// |reftest| skip -- Intl.DurationFormat is not supported
// Copyright (C) 2023 André Bargull. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
esid: sec-Intl.DurationFormat.prototype.formatToParts
description: >
  Test formatToParts method with negative duration and default style
locale: [en-US]
includes: [testIntl.js]
features: [Intl.DurationFormat]
---*/

function compare(actual, expected, message) {
  assert.sameValue(Array.isArray(expected), true, `${message}: expected is Array`);
  assert.sameValue(Array.isArray(actual), true, `${message}: actual is Array`);
  assert.sameValue(actual.length, expected.length, `${message}: length`);

  for (let i = 0; i < expected.length; ++i) {
    let actualEntry = actual[i];
    let expectedEntry = expected[i];

    assert.sameValue(actualEntry.type, expectedEntry.type, `type for entry ${i}`);
    assert.sameValue(actualEntry.value, expectedEntry.value, `value for entry ${i}`);
    assert.sameValue("unit" in actualEntry, "unit" in expectedEntry, `unit for entry ${i}`);
    if ("unit" in expectedEntry) {
      assert.sameValue(actualEntry.unit, expectedEntry.unit, `unit for entry ${i}`);
    }
  }
}

const duration = {
  years: -1,
  months: -2,
  weeks: -3,
  days: -4,
  hours: -5,
  minutes: -6,
  seconds: -7,
  milliseconds: -123,
  microseconds: -456,
  nanoseconds: -789,
};

const expected = partitionDurationFormatPattern(duration);

const df = new Intl.DurationFormat("en");
compare(df.formatToParts(duration), expected, `Using style : default`);

reportCompare(0, 0);