mirror of
https://github.com/servo/servo.git
synced 2025-06-23 08:34:42 +01:00
52 lines
1.4 KiB
JavaScript
52 lines
1.4 KiB
JavaScript
// Tests <http://heycam.github.io/webidl/#es-stringifier>.
|
|
function test_stringifier_attribute(aObject, aAttribute, aIsUnforgeable) {
|
|
// Step 1.
|
|
test(function() {
|
|
[null, undefined].forEach(function(v) {
|
|
assert_throws(new TypeError(), function() {
|
|
aObject.toString.call(v);
|
|
});
|
|
});
|
|
});
|
|
|
|
// TODO Step 2: security check.
|
|
|
|
// Step 3.
|
|
test(function() {
|
|
assert_false("Window" in window && aObject instanceof window.Window);
|
|
[{}, window].forEach(function(v) {
|
|
assert_throws(new TypeError(), function() {
|
|
aObject.toString.call(v)
|
|
});
|
|
});
|
|
});
|
|
|
|
// Step 4-6.
|
|
var expected_value;
|
|
test(function() {
|
|
expected_value = aObject[aAttribute];
|
|
assert_equals(aObject[aAttribute], expected_value,
|
|
"The attribute " + aAttribute + " should be pure.");
|
|
});
|
|
|
|
var test_error = { name: "test" };
|
|
test(function() {
|
|
if (!aIsUnforgeable) {
|
|
Object.defineProperty(aObject, aAttribute, {
|
|
configurable: true,
|
|
get: function() { throw test_error; }
|
|
});
|
|
}
|
|
assert_equals(aObject.toString(), expected_value);
|
|
});
|
|
|
|
test(function() {
|
|
if (!aIsUnforgeable) {
|
|
Object.defineProperty(aObject, aAttribute, {
|
|
configurable: true,
|
|
value: { toString: function() { throw test_error; } }
|
|
});
|
|
}
|
|
assert_equals(aObject.toString(), expected_value);
|
|
});
|
|
}
|