add new failing test case

This commit is contained in:
Kristin Rutenkolk 2024-07-23 15:04:44 +02:00
parent b37b975b17
commit 510763f68e
2 changed files with 33 additions and 18 deletions

View file

@ -39,35 +39,41 @@ char* upcall_test_int_fn_string_ret(int (*f)(void)) {
} }
CString get_string1(void) { CString get_string1(void) {
return responses[counter++ % 3]; return responses[counter++ % 3];
} }
CString get_string2(void) { CString get_string2(void) {
return "Alternate string"; return "Alternate string";
} }
StringFactory get_downcall(int whichString) { StringFactory get_downcall(int whichString) {
switch (whichString % 2) { switch (whichString % 2) {
case 0: case 0:
return get_string1; return get_string1;
case 1: case 1:
return get_string2; return get_string2;
default: default:
return 0; return 0;
} }
} }
typedef struct alignment_test { typedef struct alignment_test {
char a; char a;
double x; double x;
float y; float y;
} AlignmentTest; } AlignmentTest;
AlignmentTest get_struct() { AlignmentTest get_struct() {
AlignmentTest ret = {}; AlignmentTest ret = {};
ret.a = 'x'; ret.a = 'x';
ret.x = 3.14; ret.x = 3.14;
ret.y = 42.0; ret.y = 42.0;
return ret; return ret;
} }
void test_call_with_trailing_string_arg(int a, int b, char* text) {
printf("call of `test_call_with_trailing_string_arg` with a=%i b=%i text='%s'",a,b,text);
return;
}

View file

@ -59,3 +59,12 @@
(ffi/freset! (ffi/static-variable "counter" ::mem/int) 1) (ffi/freset! (ffi/static-variable "counter" ::mem/int) 1)
(t/is (= ((ffi/cfn "get_string1" [] ::mem/c-string)) (t/is (= ((ffi/cfn "get_string1" [] ::mem/c-string))
"Goodbye friend."))) "Goodbye friend.")))
(t/deftest can-call-with-trailing-string-arg
(t/is
(=
((ffi/cfn "test_call_with_trailing_string_arg"
[::mem/int ::mem/int ::mem/c-string]
::mem/void)
1 2 "third arg")
)))