diff options
author | Andy Finch <andyfinch7@gmail.com> | 2019-12-05 15:30:20 -0500 |
---|---|---|
committer | Ry Dahl <ry@tinyclouds.org> | 2019-12-05 15:30:20 -0500 |
commit | 7c3b9b4f4f2f4ec8fdeb0e77bb853fd22ffaa476 (patch) | |
tree | aeafe5cc2560c5366704d7a580a5b0e0dced504d /test_plugin/tests/test.js | |
parent | 214b3eb29aa9cce8a55a247b4bd816cbd19bfe6b (diff) |
feat: first pass at native plugins (#3372)
Diffstat (limited to 'test_plugin/tests/test.js')
-rw-r--r-- | test_plugin/tests/test.js | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/test_plugin/tests/test.js b/test_plugin/tests/test.js new file mode 100644 index 000000000..5a127d328 --- /dev/null +++ b/test_plugin/tests/test.js @@ -0,0 +1,47 @@ +const filenameBase = "test_plugin"; + +let filenameSuffix = ".so"; +let filenamePrefix = "lib"; + +if (Deno.build.os === "win") { + filenameSuffix = ".dll"; + filenamePrefix = ""; +} +if (Deno.build.os === "mac") { + filenameSuffix = ".dylib"; +} + +const filename = `../target/${Deno.args[1]}/${filenamePrefix}${filenameBase}${filenameSuffix}`; + +const plugin = Deno.openPlugin(filename); + +const { testSync, testAsync } = plugin.ops; + +const textDecoder = new TextDecoder(); + +function runTestSync() { + const response = testSync.dispatch( + new Uint8Array([116, 101, 115, 116]), + new Uint8Array([116, 101, 115, 116]) + ); + + console.log(`Plugin Sync Response: ${textDecoder.decode(response)}`); +} + +testAsync.setAsyncHandler(response => { + console.log(`Plugin Async Response: ${textDecoder.decode(response)}`); +}); + +function runTestAsync() { + const response = testAsync.dispatch( + new Uint8Array([116, 101, 115, 116]), + new Uint8Array([116, 101, 115, 116]) + ); + + if (response != null || response != undefined) { + throw new Error("Expected null response!"); + } +} + +runTestSync(); +runTestAsync(); |