diff options
Diffstat (limited to 'deps/v8/test/mjsunit/wasm/table.js')
-rw-r--r-- | deps/v8/test/mjsunit/wasm/table.js | 53 |
1 files changed, 30 insertions, 23 deletions
diff --git a/deps/v8/test/mjsunit/wasm/table.js b/deps/v8/test/mjsunit/wasm/table.js index 32bdecad66..0f4a63396e 100644 --- a/deps/v8/test/mjsunit/wasm/table.js +++ b/deps/v8/test/mjsunit/wasm/table.js @@ -46,14 +46,14 @@ function assertTableIsValid(table, length) { assertThrows(() => new WebAssembly.Table({element: "any", initial: 10}), TypeError); assertThrows(() => new WebAssembly.Table( - {element: "anyfunc", initial: -1}), RangeError); + {element: "anyfunc", initial: -1}), TypeError); assertThrows(() => new WebAssembly.Table( - {element: "anyfunc", initial: outOfUint32RangeValue}), RangeError); + {element: "anyfunc", initial: outOfUint32RangeValue}), TypeError); assertThrows(() => new WebAssembly.Table( - {element: "anyfunc", initial: 10, maximum: -1}), RangeError); + {element: "anyfunc", initial: 10, maximum: -1}), TypeError); assertThrows(() => new WebAssembly.Table( - {element: "anyfunc", initial: 10, maximum: outOfUint32RangeValue}), RangeError); + {element: "anyfunc", initial: 10, maximum: outOfUint32RangeValue}), TypeError); assertThrows(() => new WebAssembly.Table( {element: "anyfunc", initial: 10, maximum: 9}), RangeError); @@ -75,31 +75,25 @@ function assertTableIsValid(table, length) { assertEquals(null, table.get(0)); assertEquals(undefined, table[0]); - table = new WebAssembly.Table({element: "anyfunc", initial: undefined}); + table = new WebAssembly.Table({element: "anyfunc", initial: 0, maximum: 10}); assertTableIsValid(table, 0); - table = new WebAssembly.Table({element: "anyfunc"}); + table = new WebAssembly.Table({element: "anyfunc", initial: 0, maximum: "10"}); assertTableIsValid(table, 0); - table = new WebAssembly.Table({element: "anyfunc", maximum: 10}); - assertTableIsValid(table, 0); - - table = new WebAssembly.Table({element: "anyfunc", maximum: "10"}); - assertTableIsValid(table, 0); - - table = new WebAssembly.Table({element: "anyfunc", maximum: {valueOf() { return "10" }}}); + table = new WebAssembly.Table({element: "anyfunc", initial: 0, maximum: {valueOf() { return "10" }}}); assertTableIsValid(table, 0); table = new WebAssembly.Table({element: "anyfunc", initial: 0, maximum: undefined}); assertTableIsValid(table, 0); - table = new WebAssembly.Table({element: "anyfunc", maximum: kMaxUint31}); + table = new WebAssembly.Table({element: "anyfunc", initial: 0, maximum: kMaxUint31}); assertTableIsValid(table, 0); - table = new WebAssembly.Table({element: "anyfunc", maximum: kMaxUint32}); + table = new WebAssembly.Table({element: "anyfunc", initial: 0, maximum: kMaxUint32}); assertTableIsValid(table, 0); - table = new WebAssembly.Table({element: "anyfunc", maximum: kV8MaxWasmTableSize + 1}); + table = new WebAssembly.Table({element: "anyfunc", initial: 0, maximum: kV8MaxWasmTableSize + 1}); assertTableIsValid(table, 0); })(); @@ -147,10 +141,13 @@ function assertTableIsValid(table, length) { assertEquals(null, table.get(i)); assertEquals(null, table.get(String(i))); } - for (let key of [0.4, "", NaN, {}, [], () => {}]) { + for (let key of [0.4, "", []]) { assertEquals(null, table.get(key)); } - for (let key of [-1, table.length, table.length * 10]) { + for (let key of [-1, NaN, {}, () => {}]) { + assertThrows(() => table.get(key), TypeError); + } + for (let key of [table.length, table.length * 10]) { assertThrows(() => table.get(key), RangeError); } assertThrows(() => table.get(Symbol()), TypeError); @@ -182,14 +179,19 @@ function assertTableIsValid(table, length) { assertSame(undefined, table[i]); } - for (let key of [0.4, "", NaN, {}, [], () => {}]) { + for (let key of [0.4, "", []]) { assertSame(undefined, table.set(0, null)); assertSame(undefined, table.set(key, f)); assertSame(f, table.get(0)); assertSame(undefined, table[key]); } + for (let key of [NaN, {}, () => {}]) { + assertSame(undefined, table[key]); + assertThrows(() => table.set(key, f), TypeError); + } - for (let key of [-1, table.length, table.length * 10]) { + assertThrows(() => table.set(-1, f), TypeError); + for (let key of [table.length, table.length * 10]) { assertThrows(() => table.set(key, f), RangeError); } @@ -220,7 +222,12 @@ function assertTableIsValid(table, length) { assertSame(f, table[i]); } - for (let key of [0.4, "", NaN, {}, [], () => {}]) { + for (let key of [NaN, {}, () => {}]) { + assertSame(f, table[key] = f); + assertSame(f, table[key]); + assertThrows(() => table.get(key), TypeError); + } + for (let key of [0.4, "", []]) { assertSame(f, table[key] = f); assertSame(f, table[key]); assertSame(null, table.get(key)); @@ -252,7 +259,7 @@ function assertTableIsValid(table, length) { check(table); table.grow(10); check(table); - assertThrows(() => table.grow(-10), RangeError); + assertThrows(() => table.grow(-10), TypeError); table = new WebAssembly.Table({element: "anyfunc", initial: 20, maximum: 25}); init(table); @@ -264,7 +271,7 @@ function assertTableIsValid(table, length) { table.grow(0); check(table); assertThrows(() => table.grow(1), RangeError); - assertThrows(() => table.grow(-10), RangeError); + assertThrows(() => table.grow(-10), TypeError); assertThrows(() => WebAssembly.Table.prototype.grow.call([], 0), TypeError); |