add new failing test case
This commit is contained in:
parent
b37b975b17
commit
510763f68e
2 changed files with 33 additions and 18 deletions
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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")
|
||||||
|
)))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue