Skip to content

Commit

Permalink
Add some tests for empty names for imports and exports.
Browse files Browse the repository at this point in the history
Also contains a small bonus test for WebAssembly.Module.exports.
  • Loading branch information
Ms2ger committed Jan 14, 2021
1 parent e9e8930 commit 6d2a4b9
Show file tree
Hide file tree
Showing 3 changed files with 242 additions and 0 deletions.
128 changes: 128 additions & 0 deletions wasm/jsapi/instanceTestFactory.js
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,134 @@ const instanceTestFactory = [
}
],

[
"imports with empty module names",
function() {
const builder = new WasmModuleBuilder();

builder.addImport("", "fn", kSig_v_v);
builder.addImportedGlobal("", "global", kWasmI32);
builder.addImportedMemory("", "memory", 0, 128);
builder.addImportedTable("", "table", 0, 128);

const buffer = builder.toBuffer();
const imports = {
"": {
"fn": function() {},
"global": 0,
"memory": new WebAssembly.Memory({ "initial": 64, maximum: 128 }),
"table": new WebAssembly.Table({ "element": "anyfunc", "initial": 64, maximum: 128 }),
},
};

return {
buffer,
args: [imports],
exports: {},
verify: () => {},
};
}
],

[
"imports with empty names",
function() {
const builder = new WasmModuleBuilder();

builder.addImport("a", "", kSig_v_v);
builder.addImportedGlobal("b", "", kWasmI32);
builder.addImportedMemory("c", "", 0, 128);
builder.addImportedTable("d", "", 0, 128);

const buffer = builder.toBuffer();
const imports = {
"a": { "": function() {} },
"b": { "": 0 },
"c": { "": new WebAssembly.Memory({ "initial": 64, maximum: 128 }) },
"d": { "": new WebAssembly.Table({ "element": "anyfunc", "initial": 64, maximum: 128 }) },
};

return {
buffer,
args: [imports],
exports: {},
verify: () => {},
};
}
],

[
"exports with empty name: function",
function() {
const builder = new WasmModuleBuilder();

builder
.addFunction("", kSig_v_d)
.addBody([])
.exportFunc();

const buffer = builder.toBuffer();

const exports = {
"": { "kind": "function", "name": "0", "length": 1 },
};

return {
buffer,
args: [],
exports,
verify: () => {},
};
}
],

[
"exports with empty name: table",
function() {
const builder = new WasmModuleBuilder();

builder.setTableBounds(1);
builder.addExportOfKind("", kExternalTable, 0);

const buffer = builder.toBuffer();

const exports = {
"": { "kind": "table", "length": 1 },
};

return {
buffer,
args: [],
exports,
verify: () => {},
};
}
],

[
"exports with empty name: global",
function() {
const builder = new WasmModuleBuilder();

builder.addGlobal(kWasmI32, true)
.exportAs("")
.init = 7;

const buffer = builder.toBuffer();

const exports = {
"": { "kind": "global", "value": 7 },
};

return {
buffer,
args: [],
exports,
verify: () => {},
};
}
],

[
"No imports",
function() {
Expand Down
54 changes: 54 additions & 0 deletions wasm/jsapi/module/exports.any.js
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,12 @@ test(() => {
}
}, "Branding");

test(() => {
const module = new WebAssembly.Module(emptyModuleBinary);
const exports = WebAssembly.Module.exports(module);
assert_true(Array.isArray(exports));
}, "Return type");

test(() => {
const module = new WebAssembly.Module(emptyModuleBinary);
const exports = WebAssembly.Module.exports(module);
Expand Down Expand Up @@ -124,6 +130,54 @@ test(() => {
assert_exports(exports, expected);
}, "exports");

test(() => {
const builder = new WasmModuleBuilder();

builder
.addFunction("", kSig_v_v)
.addBody([])
.exportFunc();

const buffer = builder.toBuffer()
const module = new WebAssembly.Module(buffer);
const exports = WebAssembly.Module.exports(module);
const expected = [
{ "kind": "function", "name": "" },
];
assert_exports(exports, expected);
}, "exports with empty name: function");

test(() => {
const builder = new WasmModuleBuilder();

builder.setTableBounds(1);
builder.addExportOfKind("", kExternalTable, 0);

const buffer = builder.toBuffer()
const module = new WebAssembly.Module(buffer);
const exports = WebAssembly.Module.exports(module);
const expected = [
{ "kind": "table", "name": "" },
];
assert_exports(exports, expected);
}, "exports with empty name: table");

test(() => {
const builder = new WasmModuleBuilder();

builder.addGlobal(kWasmI32, true)
.exportAs("")
.init = 7;

const buffer = builder.toBuffer()
const module = new WebAssembly.Module(buffer);
const exports = WebAssembly.Module.exports(module);
const expected = [
{ "kind": "global", "name": "" },
];
assert_exports(exports, expected);
}, "exports with empty name: global");

test(() => {
const module = new WebAssembly.Module(emptyModuleBinary);
const exports = WebAssembly.Module.exports(module, {});
Expand Down
60 changes: 60 additions & 0 deletions wasm/jsapi/module/imports.any.js
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,66 @@ test(() => {
assert_imports(imports, expected);
}, "imports");

test(() => {
const builder = new WasmModuleBuilder();

builder.addImport("", "fn", kSig_v_v);
builder.addImportedGlobal("", "global", kWasmI32);
builder.addImportedMemory("", "memory", 0, 128);
builder.addImportedTable("", "table", 0, 128);

const buffer = builder.toBuffer()
const module = new WebAssembly.Module(buffer);
const imports = WebAssembly.Module.imports(module);
const expected = [
{ "module": "", "kind": "function", "name": "fn" },
{ "module": "", "kind": "global", "name": "global" },
{ "module": "", "kind": "memory", "name": "memory" },
{ "module": "", "kind": "table", "name": "table" },
];
assert_imports(imports, expected);
}, "imports with empty module name");

test(() => {
const builder = new WasmModuleBuilder();

builder.addImport("a", "", kSig_v_v);
builder.addImportedGlobal("b", "", kWasmI32);
builder.addImportedMemory("c", "", 0, 128);
builder.addImportedTable("d", "", 0, 128);

const buffer = builder.toBuffer()
const module = new WebAssembly.Module(buffer);
const imports = WebAssembly.Module.imports(module);
const expected = [
{ "module": "a", "kind": "function", "name": "" },
{ "module": "b", "kind": "global", "name": "" },
{ "module": "c", "kind": "memory", "name": "" },
{ "module": "d", "kind": "table", "name": "" },
];
assert_imports(imports, expected);
}, "imports with empty names");

test(() => {
const builder = new WasmModuleBuilder();

builder.addImport("", "", kSig_v_v);
builder.addImportedGlobal("", "", kWasmI32);
builder.addImportedMemory("", "", 0, 128);
builder.addImportedTable("", "", 0, 128);

const buffer = builder.toBuffer()
const module = new WebAssembly.Module(buffer);
const imports = WebAssembly.Module.imports(module);
const expected = [
{ "module": "", "kind": "function", "name": "" },
{ "module": "", "kind": "global", "name": "" },
{ "module": "", "kind": "memory", "name": "" },
{ "module": "", "kind": "table", "name": "" },
];
assert_imports(imports, expected);
}, "imports with empty module names and names");

test(() => {
const module = new WebAssembly.Module(emptyModuleBinary);
const imports = WebAssembly.Module.imports(module, {});
Expand Down

0 comments on commit 6d2a4b9

Please sign in to comment.