| // META: global=window,dedicatedworker,jsshell,shadowrealm |
| // META: script=/wasm/jsapi/assertions.js |
| |
| test(() => { |
| assert_function_name( |
| WebAssembly.Exception, |
| "Exception", |
| "WebAssembly.Exception" |
| ); |
| }, "name"); |
| |
| test(() => { |
| assert_function_length(WebAssembly.Exception, 1, "WebAssembly.Exception"); |
| }, "length"); |
| |
| test(() => { |
| assert_throws_js(TypeError, () => new WebAssembly.Exception()); |
| }, "No arguments"); |
| |
| test(() => { |
| const tag = new WebAssembly.Tag({ parameters: [] }); |
| assert_throws_js(TypeError, () => WebAssembly.Exception(tag)); |
| }, "Calling"); |
| |
| test(() => { |
| const invalidArguments = [ |
| undefined, |
| null, |
| false, |
| true, |
| "", |
| "test", |
| Symbol(), |
| 1, |
| NaN, |
| {}, |
| ]; |
| for (const invalidArgument of invalidArguments) { |
| assert_throws_js( |
| TypeError, |
| () => new WebAssembly.Exception(invalidArgument), |
| `new Exception(${format_value(invalidArgument)})` |
| ); |
| } |
| }, "Invalid descriptor argument"); |
| |
| test(() => { |
| const typesAndArgs = [ |
| ["i32", 123n], |
| ["i32", Symbol()], |
| ["f32", 123n], |
| ["f64", 123n], |
| ["i64", undefined], |
| ]; |
| for (const typeAndArg of typesAndArgs) { |
| const tag = new WebAssembly.Tag({ parameters: [typeAndArg[0]] }); |
| assert_throws_js( |
| TypeError, |
| () => new WebAssembly.Exception(tag, typeAndArg[1]) |
| ); |
| } |
| }, "Invalid exception argument"); |