diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-10-22 15:30:03 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-10-22 15:30:03 -0700 |
commit | e48db465e2a2f13b2e9c4797d3334fc6d2b29b6d (patch) | |
tree | 79937100322df639de1bc78b3f1d3dd25871650c /tests | |
parent | 11a4926fc6c2bfe43fef3c66ad30e4b2df612616 (diff) |
initial work on worker api
Diffstat (limited to 'tests')
-rwxr-xr-x | tests/runner.py | 4 | ||||
-rw-r--r-- | tests/worker_api_main.cpp | 24 | ||||
-rw-r--r-- | tests/worker_api_worker.cpp | 16 |
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); +} + +} + |