X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Ftypesafe_cb%2Ftest%2Frun.c;h=79863db84128c85a3079f5faad769e9db039bbf3;hp=b04fae883c2e5c659496739dea75950da7e67b8f;hb=8388c33a83ad51c6fdc355d938f08419d2b24923;hpb=650c775ff00cccd03fc84e7789a03c51d9839004 diff --git a/ccan/typesafe_cb/test/run.c b/ccan/typesafe_cb/test/run.c index b04fae88..79863db8 100644 --- a/ccan/typesafe_cb/test/run.c +++ b/ccan/typesafe_cb/test/run.c @@ -1,6 +1,7 @@ -#include "typesafe_cb/typesafe_cb.h" +#include #include -#include "tap/tap.h" +#include +#include static char dummy = 0; @@ -11,7 +12,7 @@ static void _set_some_value(void *val) } #define set_some_value(expr) \ - _set_some_value(cast_if_type((expr), unsigned long, void *)) + _set_some_value(typesafe_cb_cast(void *, unsigned long, (expr))) static void _callback_onearg(void (*fn)(void *arg), void *arg) { @@ -29,29 +30,19 @@ static void _callback_postargs(void (*fn)(void *arg, int a, int b), void *arg) } #define callback_onearg(cb, arg) \ - _callback_onearg(typesafe_cb(void, (cb), (arg)), (arg)) + _callback_onearg(typesafe_cb(void, void *, (cb), (arg)), (arg)) #define callback_preargs(cb, arg) \ - _callback_preargs(typesafe_cb_preargs(void, (cb), (arg), int, int), (arg)) + _callback_preargs(typesafe_cb_preargs(void, void *, (cb), (arg), int, int), (arg)) #define callback_postargs(cb, arg) \ - _callback_postargs(typesafe_cb_postargs(void, (cb), (arg), int, int), (arg)) + _callback_postargs(typesafe_cb_postargs(void, void *, (cb), (arg), int, int), (arg)) static void my_callback_onearg(char *p) { ok1(strcmp(p, "hello world") == 0); } -static void my_callback_onearg_const(const char *p) -{ - ok1(strcmp(p, "hello world") == 0); -} - -static void my_callback_onearg_volatile(volatile char *p) -{ - ok1(strcmp((char *)p, "hello world") == 0); -} - static void my_callback_preargs(int a, int b, char *p) { ok1(a == 1); @@ -59,20 +50,6 @@ static void my_callback_preargs(int a, int b, char *p) ok1(strcmp(p, "hello world") == 0); } -static void my_callback_preargs_const(int a, int b, const char *p) -{ - ok1(a == 1); - ok1(b == 2); - ok1(strcmp(p, "hello world") == 0); -} - -static void my_callback_preargs_volatile(int a, int b, volatile char *p) -{ - ok1(a == 1); - ok1(b == 2); - ok1(strcmp((char *)p, "hello world") == 0); -} - static void my_callback_postargs(char *p, int a, int b) { ok1(a == 1); @@ -80,69 +57,53 @@ static void my_callback_postargs(char *p, int a, int b) ok1(strcmp(p, "hello world") == 0); } -static void my_callback_postargs_const(const char *p, int a, int b) -{ - ok1(a == 1); - ok1(b == 2); - ok1(strcmp(p, "hello world") == 0); -} - -static void my_callback_postargs_volatile(volatile char *p, int a, int b) -{ - ok1(a == 1); - ok1(b == 2); - ok1(strcmp((char *)p, "hello world") == 0); -} - -/* This is simply a compile test; we promised cast_if_type can be in a +/* This is simply a compile test; we promised typesafe_cb_cast can be in a * static initializer. */ struct callback_onearg { void (*fn)(void *arg); - void *arg; + const void *arg; }; struct callback_onearg cb_onearg -= { typesafe_cb(void, my_callback_onearg, "hello world"), "hello world" }; += { typesafe_cb(void, void *, my_callback_onearg, (char *)(intptr_t)"hello world"), + "hello world" }; struct callback_preargs { void (*fn)(int a, int b, void *arg); - void *arg; + const void *arg; }; struct callback_preargs cb_preargs -= { typesafe_cb_preargs(void, my_callback_preargs, "hi", int, int), "hi" }; += { typesafe_cb_preargs(void, void *, my_callback_preargs, + (char *)(intptr_t)"hi", int, int), "hi" }; struct callback_postargs { void (*fn)(void *arg, int a, int b); - void *arg; + const void *arg; }; struct callback_postargs cb_postargs -= { typesafe_cb_postargs(void, my_callback_postargs, "hi", int, int), "hi" }; += { typesafe_cb_postargs(void, void *, my_callback_postargs, + (char *)(intptr_t)"hi", int, int), "hi" }; int main(int argc, char *argv[]) { void *p = &dummy; unsigned long l = (unsigned long)p; + char str[] = "hello world"; - plan_tests(2 + 3 + 9 + 9); + plan_tests(2 + 1 + 3 + 3); set_some_value(p); set_some_value(l); - callback_onearg(my_callback_onearg, "hello world"); - callback_onearg(my_callback_onearg_const, "hello world"); - callback_onearg(my_callback_onearg_volatile, "hello world"); + callback_onearg(my_callback_onearg, str); - callback_preargs(my_callback_preargs, "hello world"); - callback_preargs(my_callback_preargs_const, "hello world"); - callback_preargs(my_callback_preargs_volatile, "hello world"); + callback_preargs(my_callback_preargs, str); - callback_postargs(my_callback_postargs, "hello world"); - callback_postargs(my_callback_postargs_const, "hello world"); - callback_postargs(my_callback_postargs_volatile, "hello world"); + callback_postargs(my_callback_postargs, str); return exit_status(); }