| // META: global=window,dedicatedworker,jsshell |
| // META: script=/wasm/jsapi/wasm-module-builder.js |
| // META: script=/wasm/jsapi/assertions.js |
| // META: script=/wasm/jsapi/instanceTestFactory.js |
| |
| let emptyModuleBinary; |
| setup(() => { |
| emptyModuleBinary = new WasmModuleBuilder().toBuffer(); |
| }); |
| |
| test(() => { |
| assert_function_name(WebAssembly.Instance, "Instance", "WebAssembly.Instance"); |
| }, "name"); |
| |
| test(() => { |
| assert_function_length(WebAssembly.Instance, 1, "WebAssembly.Instance"); |
| }, "length"); |
| |
| test(() => { |
| assert_throws_js(TypeError, () => new WebAssembly.Instance()); |
| }, "No arguments"); |
| |
| test(() => { |
| const invalidArguments = [ |
| undefined, |
| null, |
| true, |
| "", |
| Symbol(), |
| 1, |
| {}, |
| WebAssembly.Module, |
| WebAssembly.Module.prototype, |
| ]; |
| for (const argument of invalidArguments) { |
| assert_throws_js(TypeError, () => new WebAssembly.Instance(argument), |
| `new Instance(${format_value(argument)})`); |
| } |
| }, "Non-Module arguments"); |
| |
| test(() => { |
| const module = new WebAssembly.Module(emptyModuleBinary); |
| assert_throws_js(TypeError, () => WebAssembly.Instance(module)); |
| }, "Calling"); |
| |
| for (const [name, fn] of instanceTestFactory) { |
| test(() => { |
| const { buffer, args, exports, verify } = fn(); |
| const module = new WebAssembly.Module(buffer); |
| const instance = new WebAssembly.Instance(module, ...args); |
| assert_Instance(instance, exports); |
| verify(instance); |
| }, name); |
| } |