summaryrefslogtreecommitdiff
path: root/test/binaryen.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/binaryen.js')
-rw-r--r--test/binaryen.js/kitchen-sink.js55
-rw-r--r--test/binaryen.js/kitchen-sink.js.txt20
2 files changed, 75 insertions, 0 deletions
diff --git a/test/binaryen.js/kitchen-sink.js b/test/binaryen.js/kitchen-sink.js
index 1d955eb6f..54fa9abd8 100644
--- a/test/binaryen.js/kitchen-sink.js
+++ b/test/binaryen.js/kitchen-sink.js
@@ -887,6 +887,60 @@ function test_internals() {
console.log('sizeof Literal: ' + Binaryen['_BinaryenSizeofLiteral']());
}
+function test_for_each() {
+ module = new Binaryen.Module();
+
+ var v = module.addFunctionType("v", Binaryen.None, []);
+
+ var fns = [
+ module.addFunction("fn0", v, [], module.nop()),
+ module.addFunction("fn1", v, [], module.nop()),
+ module.addFunction("fn2", v, [], module.nop())
+ ];
+
+ var i;
+ for (i = 0 ; i < module.getNumFunctions() ; i++) {
+ assert(module.getFunctionByIndex(i) === fns[i]);
+ }
+
+ var exps = [
+ module.addFunctionExport("fn0", "export0"),
+ module.addFunctionExport("fn1", "export1"),
+ module.addFunctionExport("fn2", "export2")
+ ];
+
+ for (i = 0 ; i < module.getNumExports() ; i++) {
+ assert(module.getExportByIndex(i) === exps[i]);
+ }
+
+ var expected_offsets = [10, 125];
+ var expected_data = ["hello, world", "segment data 2"];
+
+ var global = module.addGlobal("a-global", Binaryen.i32, false, module.i32.const(expected_offsets[1]))
+ module.setMemory(1, 256, "mem", [
+ {
+ passive: false,
+ offset: module.i32.const(expected_offsets[0]),
+ data: expected_data[0].split('').map(function(x) { return x.charCodeAt(0) })
+ },
+ {
+ passive: false,
+ offset: module.global.get("a-global"),
+ data: expected_data[1].split('').map(function(x) { return x.charCodeAt(0) })
+ }
+ ], false);
+ for (i = 0 ; i < module.getNumMemorySegments() ; i++) {
+ var segment = module.getMemorySegmentInfoByIndex(i);
+ assert(expected_offsets[i] === segment.byteOffset);
+ var data8 = new Uint8Array(segment.data);
+ var str = String.fromCharCode.apply(null, data8);
+ assert(expected_data[i] === str);
+ }
+
+ console.log(module.emitText());
+ module.dispose();
+}
+
function main() {
test_types();
test_features();
@@ -899,6 +953,7 @@ function main() {
test_tracing();
test_parsing();
test_internals();
+ test_for_each();
}
main();
diff --git a/test/binaryen.js/kitchen-sink.js.txt b/test/binaryen.js/kitchen-sink.js.txt
index 87a6bc97c..ea2ff9d0c 100644
--- a/test/binaryen.js/kitchen-sink.js.txt
+++ b/test/binaryen.js/kitchen-sink.js.txt
@@ -9699,3 +9699,23 @@ module loaded from text form:
)
sizeof Literal: 24
+(module
+ (type $v (func))
+ (memory $0 1 256)
+ (data (i32.const 10) "hello, world")
+ (data (global.get $a-global) "segment data 2")
+ (global $a-global i32 (i32.const 125))
+ (export "export0" (func $fn0))
+ (export "export1" (func $fn1))
+ (export "export2" (func $fn2))
+ (export "mem" (memory $0))
+ (func $fn0 (; 0 ;) (type $v)
+ (nop)
+ )
+ (func $fn1 (; 1 ;) (type $v)
+ (nop)
+ )
+ (func $fn2 (; 2 ;) (type $v)
+ (nop)
+ )
+)