mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
3dfd6c1bac
--HG-- extra : rebase_source : d635a4f39c587d4d381b486dd63de747865b77a2
53 lines
1.4 KiB
JavaScript
53 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);
|
|
});
|
|
}
|