summaryrefslogtreecommitdiff
path: root/test_ffi/tests/test.js
blob: a7b0aba6db6752ddb33e3569b0227a31e3b32375 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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");