summaryrefslogtreecommitdiffstats
path: root/dom/bindings/test/test_named_getter_enumerability.html
blob: 3894633a3bed02d6dff3b079cb56b1b51b97d16b (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
<!DOCTYPE html>
<meta charset=utf-8>
<title>Test for named getter enumerability</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
/* global test, assert_equals, assert_true, assert_false, assert_not_equals */
test(function() {
  var list = document.getElementsByTagName("div");
  var desc = Object.getOwnPropertyDescriptor(list, "0");
  assert_equals(typeof desc, "object", "Should have a '0' property");
  assert_true(desc.enumerable, "'0' property should be enumerable");
  desc = Object.getOwnPropertyDescriptor(list, "log");
  assert_equals(typeof desc, "object", "Should have a 'log' property");
  assert_false(desc.enumerable, "'log' property should not be enumerable");
}, "Correct getOwnPropertyDescriptor behavior");
test(function() {
  var list = document.getElementsByTagName("div");
  var props = [];
  for (var prop in list) {
    props.push(prop);
  }
  assert_not_equals(props.indexOf("0"), -1, "Should enumerate '0'");
  assert_equals(props.indexOf("log"), -1, "Should not enumerate 'log'");
}, "Correct enumeration behavior");
test(function() {
  var list = document.getElementsByTagName("div");
  var props = Object.keys(list);
  assert_not_equals(props.indexOf("0"), -1, "Keys should contain '0'");
  assert_equals(props.indexOf("log"), -1, "Keys should not contain 'log'");
}, "Correct keys() behavior");
test(function() {
  var list = document.getElementsByTagName("div");
  var props = Object.getOwnPropertyNames(list);
  assert_not_equals(props.indexOf("0"), -1,
                    "own prop names should contain '0'");
  assert_not_equals(props.indexOf("log"), -1,
                    "own prop names should contain 'log'");
}, "Correct getOwnPropertyNames() behavior");
</script>