Automatic update from web-platform-tests Remove ShadowRealm test coverage This intentionally does not make infrastructure or documentation changes, but without implementer support all the ShadowRealm tests add significant noise. Once there is implementer support this can be reverted. -- wpt-commits: e4a4672e9e607fc2b28e7173b83ce4e38ef53071 wpt-pr: 59794
86 lines
2.3 KiB
JavaScript
86 lines
2.3 KiB
JavaScript
// META: global=window,dedicatedworker,jsshell
|
|
// META: script=/wasm/jsapi/wasm-module-builder.js
|
|
|
|
function assert_Module(module) {
|
|
assert_equals(Object.getPrototypeOf(module), WebAssembly.Module.prototype,
|
|
"Prototype");
|
|
assert_true(Object.isExtensible(module), "Extensibility");
|
|
}
|
|
|
|
let emptyModuleBinary;
|
|
setup(() => {
|
|
emptyModuleBinary = new WasmModuleBuilder().toBuffer();
|
|
});
|
|
|
|
promise_test(t => {
|
|
return promise_rejects_js(t, TypeError, WebAssembly.compile());
|
|
}, "Missing argument");
|
|
|
|
promise_test(t => {
|
|
const invalidArguments = [
|
|
undefined,
|
|
null,
|
|
true,
|
|
"",
|
|
Symbol(),
|
|
1,
|
|
{},
|
|
ArrayBuffer,
|
|
ArrayBuffer.prototype,
|
|
Array.from(emptyModuleBinary),
|
|
];
|
|
return Promise.all(invalidArguments.map(argument => {
|
|
return promise_rejects_js(t, TypeError, WebAssembly.compile(argument),
|
|
`compile(${format_value(argument)})`);
|
|
}));
|
|
}, "Invalid arguments");
|
|
|
|
promise_test(() => {
|
|
const fn = WebAssembly.compile;
|
|
const thisValues = [
|
|
undefined,
|
|
null,
|
|
true,
|
|
"",
|
|
Symbol(),
|
|
1,
|
|
{},
|
|
WebAssembly,
|
|
];
|
|
return Promise.all(thisValues.map(thisValue => {
|
|
return fn.call(thisValue, emptyModuleBinary).then(assert_Module);
|
|
}));
|
|
}, "Branding");
|
|
|
|
test(() => {
|
|
const promise = WebAssembly.compile(emptyModuleBinary);
|
|
assert_equals(Object.getPrototypeOf(promise), Promise.prototype, "prototype");
|
|
assert_true(Object.isExtensible(promise), "extensibility");
|
|
}, "Promise type");
|
|
|
|
promise_test(t => {
|
|
const buffer = new Uint8Array();
|
|
return promise_rejects_js(t, WebAssembly.CompileError, WebAssembly.compile(buffer));
|
|
}, "Empty buffer");
|
|
|
|
promise_test(t => {
|
|
const buffer = new Uint8Array(Array.from(emptyModuleBinary).concat([0, 0]));
|
|
return promise_rejects_js(t, WebAssembly.CompileError, WebAssembly.compile(buffer));
|
|
}, "Invalid code");
|
|
|
|
promise_test(() => {
|
|
return WebAssembly.compile(emptyModuleBinary).then(assert_Module);
|
|
}, "Result type");
|
|
|
|
promise_test(() => {
|
|
return WebAssembly.compile(emptyModuleBinary, {}).then(assert_Module);
|
|
}, "Stray argument");
|
|
|
|
promise_test(() => {
|
|
const buffer = new WasmModuleBuilder().toBuffer();
|
|
assert_equals(buffer[0], 0);
|
|
const promise = WebAssembly.compile(buffer);
|
|
buffer[0] = 1;
|
|
return promise.then(assert_Module);
|
|
}, "Changing the buffer");
|