summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/webidl/ecmascript-binding/observable-array-ownkeys.window.js
blob: 29b537c4750a385f0000636e79c1c31126be5d5c (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
"use strict";

test(() => {
  const observableArray = document.adoptedStyleSheets;
  assert_array_equals(
      Object.getOwnPropertyNames(observableArray),
      ["length"],
      "Initially only \"length\".");

  observableArray["zzz"] = true;
  observableArray["aaa"] = true;
  assert_array_equals(
      Object.getOwnPropertyNames(observableArray),
      ["length", "zzz", "aaa"],
      "Own properties whose key is a string have been added.");

  observableArray[0] = new CSSStyleSheet();
  observableArray[1] = new CSSStyleSheet();
  assert_array_equals(
      Object.getOwnPropertyNames(observableArray),
      ["0", "1", "length", "zzz", "aaa"],
      "Own properties whose key is an array index have been added.");

  observableArray[Symbol.toStringTag] = "string_tag";
  observableArray[Symbol.toPrimitive] = "primitive";
  assert_array_equals(
      Object.getOwnPropertyNames(observableArray),
      ["0", "1", "length", "zzz", "aaa"],
      "Own properties whose key is a symbol have been added (non-symbol).");
  assert_array_equals(
      Object.getOwnPropertySymbols(observableArray),
      [Symbol.toStringTag, Symbol.toPrimitive],
      "Own properties whose key is a symbol have been added (symbol).");
}, "ObservableArray's ownKeys trap");