diff options
-rw-r--r-- | cli/tests/unit/ffi_test.ts | 2 | ||||
-rw-r--r-- | test_ffi/src/lib.rs | 37 | ||||
-rw-r--r-- | test_ffi/tests/integration_tests.rs | 7 | ||||
-rw-r--r-- | test_ffi/tests/test.js | 18 |
4 files changed, 60 insertions, 4 deletions
diff --git a/cli/tests/unit/ffi_test.ts b/cli/tests/unit/ffi_test.ts index ab25df699..07ec4003f 100644 --- a/cli/tests/unit/ffi_test.ts +++ b/cli/tests/unit/ffi_test.ts @@ -2,7 +2,7 @@ import { assertThrows, unitTest } from "./test_util.ts"; -unitTest(function dlopenInvalidArguments() { +unitTest({ perms: { ffi: true } }, function dlopenInvalidArguments() { const filename = "/usr/lib/libc.so.6"; assertThrows(() => { // @ts-expect-error: ForeignFunction cannot be null diff --git a/test_ffi/src/lib.rs b/test_ffi/src/lib.rs index d9e950d4f..a5a077950 100644 --- a/test_ffi/src/lib.rs +++ b/test_ffi/src/lib.rs @@ -4,6 +4,41 @@ pub extern "C" fn print_something() { } #[no_mangle] -pub extern "C" fn add(a: u32, b: u32) -> u32 { +pub extern "C" fn add_u32(a: u32, b: u32) -> u32 { + a + b +} + +#[no_mangle] +pub extern "C" fn add_i32(a: i32, b: i32) -> i32 { + a + b +} + +#[no_mangle] +pub extern "C" fn add_u64(a: u64, b: u64) -> u64 { + a + b +} + +#[no_mangle] +pub extern "C" fn add_i64(a: i64, b: i64) -> i64 { + a + b +} + +#[no_mangle] +pub extern "C" fn add_usize(a: usize, b: usize) -> usize { + a + b +} + +#[no_mangle] +pub extern "C" fn add_isize(a: isize, b: isize) -> isize { + a + b +} + +#[no_mangle] +pub extern "C" fn add_f32(a: f32, b: f32) -> f32 { + a + b +} + +#[no_mangle] +pub extern "C" fn add_f64(a: f64, b: f64) -> f64 { a + b } diff --git a/test_ffi/tests/integration_tests.rs b/test_ffi/tests/integration_tests.rs index 7aa8a0611..62b28d879 100644 --- a/test_ffi/tests/integration_tests.rs +++ b/test_ffi/tests/integration_tests.rs @@ -39,6 +39,13 @@ fn basic() { let expected = "\ something\n\ 579\n\ + 579\n\ + 579\n\ + 579\n\ + 579\n\ + 579\n\ + 579.9119873046875\n\ + 579.912\n\ Correct number of resources\n"; assert_eq!(stdout, expected); assert_eq!(stderr, ""); diff --git a/test_ffi/tests/test.js b/test_ffi/tests/test.js index a7b0aba6d..24b64722c 100644 --- a/test_ffi/tests/test.js +++ b/test_ffi/tests/test.js @@ -12,11 +12,25 @@ 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" }, + "add_u32": { parameters: ["u32", "u32"], result: "u32" }, + "add_i32": { parameters: ["i32", "i32"], result: "i32" }, + "add_u64": { parameters: ["u64", "u64"], result: "u64" }, + "add_i64": { parameters: ["i64", "i64"], result: "i64" }, + "add_usize": { parameters: ["usize", "usize"], result: "usize" }, + "add_isize": { parameters: ["isize", "isize"], result: "isize" }, + "add_f32": { parameters: ["f32", "f32"], result: "f32" }, + "add_f64": { parameters: ["f64", "f64"], result: "f64" }, }); dylib.symbols.print_something(); -console.log(dylib.symbols.add(123, 456)); +console.log(dylib.symbols.add_u32(123, 456)); +console.log(dylib.symbols.add_i32(123, 456)); +console.log(dylib.symbols.add_u64(123, 456)); +console.log(dylib.symbols.add_i64(123, 456)); +console.log(dylib.symbols.add_usize(123, 456)); +console.log(dylib.symbols.add_isize(123, 456)); +console.log(dylib.symbols.add_f32(123.123, 456.789)); +console.log(dylib.symbols.add_f64(123.123, 456.789)); dylib.close(); const resourcesPost = Deno.resources(); |