blob: fb35ccef0d806e70716322fbf8e374d69686f123 [file] [edit]
// META: global=window,dedicatedworker,jsshell
// META: script=/wasm/jsapi/wasm-module-builder.js
// META: script=assertions.js
test(() => {
const argument = { "element": "anyfunc", "address": "i64", "initial": 5n };
const table = new WebAssembly.Table(argument);
assert_equal_to_array(table, nulls(5), "before", "i64");
const result = table.grow(3n);
assert_equals(result, 5n);
assert_equal_to_array(table, nulls(8), "after", "i64");
}, "Basic i64");
test(() => {
const argument = { "element": "anyfunc", "address": "i64", "initial": 3n, "maximum": 5n };
const table = new WebAssembly.Table(argument);
assert_equal_to_array(table, nulls(3), "before", "i64");
const result = table.grow(2n);
assert_equals(result, 3n);
assert_equal_to_array(table, nulls(5), "after", "i64");
}, "Reached maximum (i64)");
test(() => {
const argument = { "element": "anyfunc", "address": "i64", "initial": 2n, "maximum": 5n };
const table = new WebAssembly.Table(argument);
assert_equal_to_array(table, nulls(2), "before", "i64");
assert_throws_js(RangeError, () => table.grow(4n));
assert_equal_to_array(table, nulls(2), "after", "i64");
}, "Exceeded maximum (i64)");
const outOfRangeValuesI64 = [
-1n,
0x10000000000000000n,
"0x10000000000000000",
];
for (const value of outOfRangeValuesI64) {
test(() => {
const argument = { "element": "anyfunc", "address": "i64", "initial": 1n };
const table = new WebAssembly.Table(argument);
assert_throws_js(TypeError, () => table.grow(value));
}, `Out-of-range i64 argument: ${format_value(value)}`);
}