54 lines
1.5 KiB
JavaScript
54 lines
1.5 KiB
JavaScript
// META: global=window,dedicatedworker,jsshell,shadowrealm
|
|
// META: script=/wasm/jsapi/memory/assertions.js
|
|
|
|
test(() => {
|
|
const tag = new WebAssembly.Tag({ parameters: [] });
|
|
const exn = new WebAssembly.Exception(tag, []);
|
|
assert_throws_js(TypeError, () => exn.getArg());
|
|
assert_throws_js(TypeError, () => exn.getArg(tag));
|
|
}, "Missing arguments");
|
|
|
|
test(() => {
|
|
const invalidValues = [undefined, null, true, "", Symbol(), 1, {}];
|
|
const tag = new WebAssembly.Tag({ parameters: [] });
|
|
const exn = new WebAssembly.Exception(tag, []);
|
|
for (argument of invalidValues) {
|
|
assert_throws_js(TypeError, () => exn.getArg(argument, 0));
|
|
}
|
|
}, "Invalid exception argument");
|
|
|
|
test(() => {
|
|
const tag = new WebAssembly.Tag({ parameters: [] });
|
|
const exn = new WebAssembly.Exception(tag, []);
|
|
assert_throws_js(RangeError, () => exn.getArg(tag, 1));
|
|
}, "Index out of bounds");
|
|
|
|
test(() => {
|
|
const outOfRangeValues = [
|
|
undefined,
|
|
NaN,
|
|
Infinity,
|
|
-Infinity,
|
|
-1,
|
|
0x100000000,
|
|
0x1000000000,
|
|
"0x100000000",
|
|
{
|
|
valueOf() {
|
|
return 0x100000000;
|
|
},
|
|
},
|
|
];
|
|
|
|
const tag = new WebAssembly.Tag({ parameters: [] });
|
|
const exn = new WebAssembly.Exception(tag, []);
|
|
for (const value of outOfRangeValues) {
|
|
assert_throws_js(RangeError, () => exn.getArg(tag, value));
|
|
}
|
|
}, "Getting out-of-range argument");
|
|
|
|
test(() => {
|
|
const tag = new WebAssembly.Tag({ parameters: ["i32"] });
|
|
const exn = new WebAssembly.Exception(tag, [42]);
|
|
assert_equals(exn.getArg(tag, 0), 42);
|
|
}, "getArg");
|