aboutsummaryrefslogtreecommitdiff
path: root/tests/browser_main.cpp
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2013-09-01 12:32:11 -0700
committerAlon Zakai <alonzakai@gmail.com>2013-09-03 14:41:31 -0700
commit35386a61513fe7c9f49eefb7075f0c4dc7953e81 (patch)
tree90da3d69a9275afc181878ea311f6f2d0a631ebd /tests/browser_main.cpp
parent822f067c66055cb1c7406a2f08e1f377ff30cf31 (diff)
add browser module test
Diffstat (limited to 'tests/browser_main.cpp')
-rw-r--r--tests/browser_main.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/browser_main.cpp b/tests/browser_main.cpp
new file mode 100644
index 00000000..efdce1be
--- /dev/null
+++ b/tests/browser_main.cpp
@@ -0,0 +1,42 @@
+#include <assert.h>
+#include <stdio.h>
+#include <dlfcn.h>
+#include <emscripten.h>
+
+typedef void (*voidfunc)();
+typedef int (*intfunc)();
+
+void *lib_handle;
+voidfunc onefunc;
+intfunc twofunc;
+
+void next(const char *x) {
+ lib_handle = dlopen("themodule.js", RTLD_NOW);
+ assert(lib_handle != NULL);
+
+ onefunc = (voidfunc)dlsym(lib_handle, "one");
+ twofunc = (intfunc)dlsym(lib_handle, "two");
+ assert(onefunc && twofunc);
+
+ assert(twofunc() == 0);
+ onefunc();
+ assert(twofunc() == 1);
+ onefunc();
+ onefunc();
+ assert(twofunc() == 3);
+ onefunc();
+ onefunc();
+ onefunc();
+ onefunc();
+ assert(twofunc() == 7);
+ onefunc();
+ int result = twofunc();
+ REPORT_RESULT();
+}
+
+int main() {
+ emscripten_async_wget("module.js", "themodule.js", next, NULL);
+
+ return 0;
+}
+