109 lines
3.1 KiB
HTML
109 lines
3.1 KiB
HTML
<!doctype html>
|
|
<meta charset=utf-8>
|
|
<title>HTMLCollection getters and own properties</title>
|
|
<script src=/resources/testharness.js></script>
|
|
<script src=/resources/testharnessreport.js></script>
|
|
<div id=log></div>
|
|
<script>
|
|
function append(t, tag, name) {
|
|
var element = document.createElement(tag);
|
|
if (name) {
|
|
element.id = name;
|
|
}
|
|
document.body.appendChild(element);
|
|
t.add_cleanup(function() { element.remove(); });
|
|
return element;
|
|
}
|
|
|
|
test(function() {
|
|
var name = "named", tag = "a";
|
|
var c = document.getElementsByTagName(tag);
|
|
var element = append(this, tag, name);
|
|
assert_equals(c[name], element);
|
|
c[name] = "foo";
|
|
assert_equals(c[name], element);
|
|
}, "Setting non-array index while named property exists (loose)");
|
|
|
|
test(function() {
|
|
"use strict";
|
|
var name = "named", tag = "b";
|
|
var c = document.getElementsByTagName(tag);
|
|
var element = append(this, tag, name);
|
|
assert_equals(c[name], element);
|
|
assert_throws_js(TypeError, function() {
|
|
c[name] = "foo";
|
|
});
|
|
assert_equals(c[name], element);
|
|
}, "Setting non-array index while named property exists (strict)");
|
|
|
|
test(function() {
|
|
var name = "named", tag = "i";
|
|
var c = document.getElementsByTagName(tag);
|
|
assert_equals(c[name], undefined);
|
|
c[name] = "foo";
|
|
assert_equals(c[name], "foo");
|
|
|
|
var element = append(this, tag, name);
|
|
assert_equals(c[name], "foo");
|
|
assert_equals(c.namedItem(name), element);
|
|
}, "Setting non-array index while named property doesn't exist (loose)");
|
|
|
|
test(function() {
|
|
"use strict";
|
|
var name = "named", tag = "p";
|
|
var c = document.getElementsByTagName(tag);
|
|
assert_equals(c[name], undefined);
|
|
c[name] = "foo";
|
|
assert_equals(c[name], "foo");
|
|
|
|
var element = append(this, tag, name);
|
|
assert_equals(c[name], "foo");
|
|
assert_equals(c.namedItem(name), element);
|
|
}, "Setting non-array index while named property doesn't exist (strict)");
|
|
|
|
test(function() {
|
|
var tag = "q";
|
|
var c = document.getElementsByTagName(tag);
|
|
var element = append(this, tag);
|
|
assert_equals(c[0], element);
|
|
c[0] = "foo";
|
|
assert_equals(c[0], element);
|
|
}, "Setting array index while indexed property exists (loose)");
|
|
|
|
test(function() {
|
|
"use strict";
|
|
var tag = "s";
|
|
var c = document.getElementsByTagName(tag);
|
|
var element = append(this, tag);
|
|
assert_equals(c[0], element);
|
|
assert_throws_js(TypeError, function() {
|
|
c[0] = "foo";
|
|
});
|
|
assert_equals(c[0], element);
|
|
}, "Setting array index while indexed property exists (strict)");
|
|
|
|
test(function() {
|
|
var tag = "u";
|
|
var c = document.getElementsByTagName(tag);
|
|
assert_equals(c[0], undefined);
|
|
c[0] = "foo";
|
|
assert_equals(c[0], undefined);
|
|
|
|
var element = append(this, tag);
|
|
assert_equals(c[0], element);
|
|
}, "Setting array index while indexed property doesn't exist (loose)");
|
|
|
|
test(function() {
|
|
"use strict";
|
|
var tag = "u";
|
|
var c = document.getElementsByTagName(tag);
|
|
assert_equals(c[0], undefined);
|
|
assert_throws_js(TypeError, function() {
|
|
c[0] = "foo";
|
|
});
|
|
assert_equals(c[0], undefined);
|
|
|
|
var element = append(this, tag);
|
|
assert_equals(c[0], element);
|
|
}, "Setting array index while indexed property doesn't exist (strict)");
|
|
</script>
|