Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(430)

Unified Diff: test/mjsunit/wasm/table.js

Issue 2502383003: Test that table object indexing does not interfere with backing table (Closed)
Patch Set: Extend test Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/mjsunit/wasm/table.js
diff --git a/test/mjsunit/wasm/table.js b/test/mjsunit/wasm/table.js
index 1abc29664e37eafa26faf31addcd159f14d2beda..54847206229300f986b5bff2dc3633339d3716c6 100644
--- a/test/mjsunit/wasm/table.js
+++ b/test/mjsunit/wasm/table.js
@@ -55,17 +55,21 @@ function assertTableIsValid(table) {
assertTableIsValid(table);
assertEquals(1, table.length);
assertEquals(null, table.get(0));
+ assertEquals(undefined, table[0]);
table = new WebAssembly.Table({element: "anyfunc", initial: "2"});
assertTableIsValid(table);
assertEquals(2, table.length);
assertEquals(null, table.get(0));
assertEquals(null, table.get(1));
+ assertEquals(undefined, table[0]);
+ assertEquals(undefined, table[1]);
table = new WebAssembly.Table({element: "anyfunc", initial: {valueOf() { return "1" }}});
assertTableIsValid(table);
assertEquals(1, table.length);
assertEquals(null, table.get(0));
+ assertEquals(undefined, table[0]);
table = new WebAssembly.Table({element: "anyfunc", initial: undefined});
assertTableIsValid(table);
@@ -160,6 +164,7 @@ function assertTableIsValid(table) {
assertSame(null, table.get(i));
assertSame(undefined, table.set(i, f));
assertSame(f, table.get(i));
+ assertSame(undefined, table[i]);
}
for (let i = 0; i < table.length; ++i) table.set(i, null);
@@ -167,12 +172,14 @@ function assertTableIsValid(table) {
assertSame(null, table.get(i));
assertSame(undefined, table.set(String(i), f));
assertSame(f, table.get(i));
+ assertSame(undefined, table[i]);
}
for (let key of [0.4, "", NaN, {}, [], () => {}]) {
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 [-1, table.length, table.length * 10]) {
@@ -190,6 +197,30 @@ function assertTableIsValid(table) {
}
})();
+
+(function TestIndexing() {
+ let builder = new WasmModuleBuilder;
+ builder.addExport("wasm", builder.addFunction("", kSig_v_v));
+ builder.addExport("host", builder.addImportWithModule("test", "f", kSig_v_v));
+ let {wasm, host} = builder.instantiate({test: {f() {}}}).exports;
+
+ let table = new WebAssembly.Table({element: "anyfunc", initial: 10});
+
+ for (let f of [wasm, host, () => {}, 5, {}, ""]) {
+ for (let i = 0; i < table.length; ++i) table[i] = f;
+ for (let i = 0; i < table.length; ++i) {
+ assertSame(null, table.get(i));
+ assertSame(f, table[i]);
+ }
+
+ for (let key of [0.4, "", NaN, {}, [], () => {}]) {
+ assertSame(f, table[key] = f);
+ assertSame(f, table[key]);
+ assertSame(null, table.get(key));
+ }
+ }
+})();
+
(function TestGrow() {
let builder = new WasmModuleBuilder;
builder.addExport("wasm", builder.addFunction("", kSig_v_v));
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698