aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-10-22 15:30:03 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-10-22 15:30:03 -0700
commite48db465e2a2f13b2e9c4797d3334fc6d2b29b6d (patch)
tree79937100322df639de1bc78b3f1d3dd25871650c /tests
parent11a4926fc6c2bfe43fef3c66ad30e4b2df612616 (diff)
initial work on worker api
Diffstat (limited to 'tests')
-rwxr-xr-xtests/runner.py4
-rw-r--r--tests/worker_api_main.cpp24
-rw-r--r--tests/worker_api_worker.cpp16
3 files changed, 44 insertions, 0 deletions
diff --git a/tests/runner.py b/tests/runner.py
index 41b9ee19..cb788dbb 100755
--- a/tests/runner.py
+++ b/tests/runner.py
@@ -9114,6 +9114,10 @@ elif 'browser' in str(sys.argv):
''')
self.btest('pre_run_deps.cpp', expected='10', args=['--pre-js', 'pre.js'])
+ def test_worker_api(self):
+ Popen(['python', EMCC, path_from_root('tests', 'worker_api_worker.cpp'), '-o', 'worker.js', '-s', 'BUILD_AS_WORKER=1', '-O0', '--closure', '0', '-s', 'EXPORTED_FUNCTIONS=["_one", "_two"]']).communicate()
+ self.btest('worker_api_main.cpp', args=['-O0', '--closure', '0'], expected='566')
+
pids_to_clean = []
def clean_pids(self):
return
diff --git a/tests/worker_api_main.cpp b/tests/worker_api_main.cpp
new file mode 100644
index 00000000..f91102b2
--- /dev/null
+++ b/tests/worker_api_main.cpp
@@ -0,0 +1,24 @@
+#include <stdio.h>
+#include <assert.h>
+#include <emscripten.h>
+
+int w1;
+
+void c1(char *data, int size, void *arg) {
+ assert((int)arg == 93);
+ int *x = (int*)data;
+ printf("c1: %d,%d\n", x[0], x[1]);
+
+ int result = x[1] % x[0];
+ REPORT_RESULT();
+}
+
+int main() {
+ w1 = emscripten_create_worker("worker.js");
+
+ int x[2] = { 100, 6002 };
+ emscripten_call_worker(w1, "one", (char*)x, sizeof(x), c1, (void*)93);
+
+ return 0;
+}
+
diff --git a/tests/worker_api_worker.cpp b/tests/worker_api_worker.cpp
new file mode 100644
index 00000000..9a671a91
--- /dev/null
+++ b/tests/worker_api_worker.cpp
@@ -0,0 +1,16 @@
+#include <assert.h>
+#include <emscripten.h>
+
+extern "C" {
+
+void one(char *data, int size) {
+ int *x = (int*)data;
+ int num = size/sizeof(int);
+ for (int i = 0; i < num; i++) {
+ x[i] += 1234;
+ }
+ emscripten_worker_respond(data, size);
+}
+
+}
+