add more upcall tests

This commit is contained in:
Kristin Rutenkolk 2024-06-17 10:57:15 -07:00
parent c740745d49
commit 4a7659cf2a
3 changed files with 34 additions and 0 deletions

View file

@ -134,3 +134,19 @@
[opts]
(binding [*ns* (find-ns 'build)]
(run! (call-optionally-with opts) (:tasks opts))))
(def prep-all ['compile-java 'compile-test-library])
(comment
(compile-java)
(compile-test-library)
(run-tasks prep-all)
(compile-test-library)
)

View file

@ -26,10 +26,18 @@ CString upcall_test(StringFactory fun) {
return fun();
}
int upcall_test2(int (*f)(void)) {
return f();
}
int counter = 0;
static char* responses[] = { "Hello, world!", "Goodbye friend.", "co'oi prenu" };
char* upcall_test_int_fn_string_ret(int (*f)(void)) {
return responses[f()];
}
CString get_string1(void) {
return responses[counter++ % 3];
}

View file

@ -32,6 +32,16 @@
(fn [] "hello"))
"hello")))
(t/deftest can-make-upcall2
(t/is (= ((ffi/cfn "upcall_test2" [[::ffi/fn [] ::mem/int]] ::mem/int)
(fn [] 6))
5)))
(t/deftest can-make-upcall-int-fn-string-ret
(t/is (= ((ffi/cfn "upcall_test_int_fn_string_ret" [[::ffi/fn [] ::mem/int]] ::mem/c-string)
(fn [] 2))
"co'oi prenu")))
(mem/defalias ::alignment-test
(layout/with-c-layout
[::mem/struct