summaryrefslogtreecommitdiff
path: root/test_ffi/tests/test.js
diff options
context:
space:
mode:
Diffstat (limited to 'test_ffi/tests/test.js')
-rw-r--r--test_ffi/tests/test.js33
1 files changed, 33 insertions, 0 deletions
diff --git a/test_ffi/tests/test.js b/test_ffi/tests/test.js
new file mode 100644
index 000000000..a7b0aba6d
--- /dev/null
+++ b/test_ffi/tests/test.js
@@ -0,0 +1,33 @@
+// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
+// deno-lint-ignore-file
+
+const targetDir = Deno.execPath().replace(/[^\/\\]+$/, "");
+const [libPrefix, libSuffix] = {
+ darwin: ["lib", "dylib"],
+ linux: ["lib", "so"],
+ windows: ["", "dll"],
+}[Deno.build.os];
+const libPath = `${targetDir}/${libPrefix}test_ffi.${libSuffix}`;
+
+const resourcesPre = Deno.resources();
+const dylib = Deno.dlopen(libPath, {
+ "print_something": { parameters: [], result: "void" },
+ "add": { parameters: ["u32", "u32"], result: "u32" },
+});
+
+dylib.symbols.print_something();
+console.log(dylib.symbols.add(123, 456));
+
+dylib.close();
+const resourcesPost = Deno.resources();
+
+const preStr = JSON.stringify(resourcesPre, null, 2);
+const postStr = JSON.stringify(resourcesPost, null, 2);
+if (preStr !== postStr) {
+ throw new Error(
+ `Difference in open resources before dlopen and after closing:
+Before: ${preStr}
+After: ${postStr}`,
+ );
+}
+console.log("Correct number of resources");