mirror of
https://github.com/servo/servo.git
synced 2025-06-28 02:53:48 +01:00
53 lines
No EOL
1.6 KiB
JavaScript
53 lines
No EOL
1.6 KiB
JavaScript
// META: title=Blob constructor
|
|
// META: script=../support/Blob.js
|
|
'use strict';
|
|
|
|
var test_error = {
|
|
name: "test",
|
|
message: "test error",
|
|
};
|
|
|
|
test(function() {
|
|
var args = [
|
|
document.createElement("div"),
|
|
window,
|
|
];
|
|
args.forEach(function(arg) {
|
|
assert_throws_js(TypeError, function() {
|
|
new Blob(arg);
|
|
}, "Should throw for argument " + format_value(arg) + ".");
|
|
});
|
|
}, "Passing platform objects for blobParts should throw a TypeError.");
|
|
|
|
test(function() {
|
|
var element = document.createElement("div");
|
|
element.appendChild(document.createElement("div"));
|
|
element.appendChild(document.createElement("p"));
|
|
var list = element.children;
|
|
Object.defineProperty(list, "length", {
|
|
get: function() { throw test_error; }
|
|
});
|
|
assert_throws_exactly(test_error, function() {
|
|
new Blob(list);
|
|
});
|
|
}, "A platform object that supports indexed properties should be treated as a sequence for the blobParts argument (overwritten 'length'.)");
|
|
|
|
test_blob(function() {
|
|
var select = document.createElement("select");
|
|
select.appendChild(document.createElement("option"));
|
|
return new Blob(select);
|
|
}, {
|
|
expected: "[object HTMLOptionElement]",
|
|
type: "",
|
|
desc: "Passing an platform object that supports indexed properties as the blobParts array should work (select)."
|
|
});
|
|
|
|
test_blob(function() {
|
|
var elm = document.createElement("div");
|
|
elm.setAttribute("foo", "bar");
|
|
return new Blob(elm.attributes);
|
|
}, {
|
|
expected: "[object Attr]",
|
|
type: "",
|
|
desc: "Passing an platform object that supports indexed properties as the blobParts array should work (attributes)."
|
|
}); |