summaryrefslogtreecommitdiff
path: root/test/example/c-api-kitchen-sink.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/example/c-api-kitchen-sink.c')
-rw-r--r--test/example/c-api-kitchen-sink.c65
1 files changed, 41 insertions, 24 deletions
diff --git a/test/example/c-api-kitchen-sink.c b/test/example/c-api-kitchen-sink.c
index 6d56ccf44..67f7e0642 100644
--- a/test/example/c-api-kitchen-sink.c
+++ b/test/example/c-api-kitchen-sink.c
@@ -1225,33 +1225,32 @@ void test_color_status() {
}
void test_for_each() {
- uint32_t i;
+ BinaryenIndex i;
BinaryenModuleRef module = BinaryenModuleCreate();
+ BinaryenFunctionRef fns[3] = {};
+ fns[0] = BinaryenAddFunction(module,
+ "fn0",
+ BinaryenTypeNone(),
+ BinaryenTypeNone(),
+ NULL,
+ 0,
+ BinaryenNop(module));
+ fns[1] = BinaryenAddFunction(module,
+ "fn1",
+ BinaryenTypeNone(),
+ BinaryenTypeNone(),
+ NULL,
+ 0,
+ BinaryenNop(module));
+ fns[2] = BinaryenAddFunction(module,
+ "fn2",
+ BinaryenTypeNone(),
+ BinaryenTypeNone(),
+ NULL,
+ 0,
+ BinaryenNop(module));
{
- BinaryenFunctionRef fns[3] = {0};
- fns[0] = BinaryenAddFunction(module,
- "fn0",
- BinaryenTypeNone(),
- BinaryenTypeNone(),
- NULL,
- 0,
- BinaryenNop(module));
- fns[1] = BinaryenAddFunction(module,
- "fn1",
- BinaryenTypeNone(),
- BinaryenTypeNone(),
- NULL,
- 0,
- BinaryenNop(module));
- fns[2] = BinaryenAddFunction(module,
- "fn2",
- BinaryenTypeNone(),
- BinaryenTypeNone(),
- NULL,
- 0,
- BinaryenNop(module));
-
for (i = 0; i < BinaryenGetNumFunctions(module) ; i++) {
assert(BinaryenGetFunctionByIndex(module, i) == fns[i]);
}
@@ -1285,6 +1284,24 @@ void test_for_each() {
assert(0 == strcmp(segments[i], out));
}
}
+ {
+ const char* funcNames[] = {
+ BinaryenFunctionGetName(fns[0]),
+ BinaryenFunctionGetName(fns[1]),
+ BinaryenFunctionGetName(fns[2])
+ };
+ BinaryenExpressionRef constExprRef = BinaryenConst(module, BinaryenLiteralInt32(0));
+ BinaryenSetFunctionTable(module, 1, 1, funcNames, 3, constExprRef);
+ assert(0 == BinaryenIsFunctionTableImported(module));
+ assert(1 == BinaryenGetNumFunctionTableSegments(module));
+ assert(constExprRef == BinaryenGetFunctionTableSegmentOffset(module, 0));
+ assert(3 == BinaryenGetFunctionTableSegmentLength(module, 0));
+ for (i = 0; i != BinaryenGetFunctionTableSegmentLength(module, 0); ++i)
+ {
+ const char * str = BinaryenGetFunctionTableSegmentData(module, 0, i);
+ assert(0 == strcmp(funcNames[i], str));
+ }
+ }
BinaryenModulePrint(module);
BinaryenModuleDispose(module);
}