blob: 974071ba5954c294837b6d2b72065edfd109de4e [file] [log] [blame]
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
<script>
description("Operations on the Node prototype object should be writable, enumerable and configurable.");
Object.getOwnPropertyNames(Node.prototype).forEach(function(property) {
var propertyDescriptor = Object.getOwnPropertyDescriptor(Node.prototype, property);
if (typeof propertyDescriptor.value !== "function" || property === "constructor")
return;
[
{
name: "writable",
test: function(property) {
var propertyValue = Node.prototype[property];
Node.prototype[property] = 42;
if (Node.prototype[property] !== 42)
testFailed("Property " + property + " should be writable.");
Node.prototype[property] = propertyValue;
}
},
{
name: "enumerable",
test: function(property) {
if (Object.keys(Node.prototype).indexOf(property) < 0)
testFailed("Property " + property + " should be enumerable.");
}
},
{
name: "configurable",
test: function() {
var propertyValue = Node.prototype[property];
delete Node.prototype[property];
if (Node.prototype[property] === propertyValue)
testFailed("Property " + property + " should be configurable.");
Node.prototype[property] = propertyValue;
}
}
].forEach(function(attribute) {
var propertyAttribute = "propertyDescriptor." + attribute.name;
if (eval(propertyAttribute) !== true)
testFailed(propertyAttribute + " for property " + property + " should be true.");
attribute.test(property);
});
});
</script>
<script src="../../resources/js-test-post.js"></script>
</head>
<body>
<div id="console"></div>
</body>
</html>