summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/semantics/forms/the-form-element/form-indexed-element.html
blob: 5ea96d3d1b21ac6d143b01ec325261a5255c1e8a (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
<!doctype html>
<meta charset="utf-8">
<title>form.elements: indexed</title>
<link rel="author" title="Ivan.Yang" href="mailto:jsyangwenjie@gmail.com">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<div id="test">
<form id=form>
<input type="radio" name="radio1" id="r1" value=1>
<input type="radio" name="radio2" id="r2" value=2>
</form>
</div>
<script>
test(function() {
  var form = document.getElementById("form");
  assert_equals(form[0], document.getElementById("r1"));
  assert_equals(form[1], document.getElementById("r2"));
  assert_equals(form[2], undefined);
  assert_equals(form[-1], undefined);
}, "form.elements should be accessed correctly by index")

test(function(){
  var form = document.getElementById("form");
  var old_item = form[0];
  var old_desc = Object.getOwnPropertyDescriptor(form, 0);
  assert_equals(old_desc.value, old_item);
  assert_true(old_desc.enumerable);
  assert_true(old_desc.configurable);
  assert_false(old_desc.writable);

  Object.prototype[0] = 5;
  this.add_cleanup(function () { delete Object.prototype[0]; });
  assert_equals(form[0], old_item);

  delete form[0];
  assert_equals(form[0], old_item);

  assert_throws_js(TypeError, function() {
    "use strict";
    delete form[0];
  });
  assert_equals(form[0], old_item);
}, 'Trying to delete an indexed property name should never work');
</script>