// META: global=window,dedicatedworker,jsshell,shadowrealm
// META: script=/wasm/jsapi/assertions.js
// META: script=/wasm/jsapi/wasm-module-builder.js
let emptyModuleBinary;
setup(() => {
emptyModuleBinary = new WasmModuleBuilder().toBuffer();
});
test(() => {
class _Module extends WebAssembly.Module {}
let module = new _Module(emptyModuleBinary);
assert_true(module instanceof _Module, "_Module instanceof _Module");
assert_true(module instanceof WebAssembly.Module, "_Module instanceof WebAssembly.Module");
}, "_Module");
test(() => {
class _Instance extends WebAssembly.Instance {}
let instance = new _Instance(new WebAssembly.Module(emptyModuleBinary));
assert_true(instance instanceof _Instance, "_Instance instanceof _Instance");
assert_true(instance instanceof WebAssembly.Instance, "_Instance instanceof WebAssembly.Instance");
}, "_Instance");
test(() => {
class _Memory extends WebAssembly.Memory {}
let memory = new _Memory({initial: 0, maximum: 1});
assert_true(memory instanceof _Memory, "_Memory instanceof _Memory");
assert_true(memory instanceof WebAssembly.Memory, "_Memory instanceof WebAssembly.Memory");
}, "_Memory");
test(() => {
class _Table extends WebAssembly.Table {}
let table = new _Table({initial: 0, element: "anyfunc"});
assert_true(table instanceof _Table, "_Table instanceof _Table");
assert_true(table instanceof WebAssembly.Table, "_Table instanceof WebAssembly.Table");
}, "_Table");
test(() => {
class _Global extends WebAssembly.Global {}
let global = new _Global({value: "i32", mutable: false}, 0);
assert_true(global instanceof _Global, "_Global instanceof _Global");
assert_true(global instanceof WebAssembly.Global, "_Global instanceof WebAssembly.Global");
}, "_Global");