X-Git-Url: https://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Fjbitset%2Ftest%2Frun-type.c;fp=ccan%2Fjbitset%2Ftest%2Frun-type.c;h=1eefb42350d8fed978cde92e6e6fee4ac209f72a;hp=0000000000000000000000000000000000000000;hb=5e880e4ce45a3cececd0996b384482780a92070d;hpb=b734bbea227ae0c326a0f19f84b490d8895b2010 diff --git a/ccan/jbitset/test/run-type.c b/ccan/jbitset/test/run-type.c new file mode 100644 index 00000000..1eefb423 --- /dev/null +++ b/ccan/jbitset/test/run-type.c @@ -0,0 +1,57 @@ +#include +#include +#include + +struct foo; + +JBIT_DEFINE_TYPE(struct foo, foo); + +static int cmp_ptr(const void *a, const void *b) +{ + return *(char **)a - *(char **)b; +} + +#define NUM 100 + +int main(int argc, char *argv[]) +{ + struct jbitset_foo *set; + struct foo *foo[NUM]; + unsigned int i; + + plan_tests(20); + for (i = 0; i < NUM; i++) + foo[i] = malloc(20); + + set = jbit_foo_new(); + ok1(jbit_foo_error(set) == NULL); + + ok1(jbit_foo_set(set, foo[0]) == true); + ok1(jbit_foo_set(set, foo[0]) == false); + ok1(jbit_foo_clear(set, foo[0]) == true); + ok1(jbit_foo_clear(set, foo[0]) == false); + ok1(jbit_foo_count(set) == 0); + ok1(jbit_foo_nth(set, 0) == (struct foo *)NULL); + ok1(jbit_foo_first(set) == (struct foo *)NULL); + ok1(jbit_foo_last(set) == (struct foo *)NULL); + + for (i = 0; i < NUM; i++) + jbit_foo_set(set, foo[i]); + + qsort(foo, NUM, sizeof(foo[0]), cmp_ptr); + + ok1(jbit_foo_count(set) == NUM); + ok1(jbit_foo_nth(set, 0) == foo[0]); + ok1(jbit_foo_nth(set, NUM-1) == foo[NUM-1]); + ok1(jbit_foo_nth(set, NUM) == (struct foo *)NULL); + ok1(jbit_foo_first(set) == foo[0]); + ok1(jbit_foo_last(set) == foo[NUM-1]); + ok1(jbit_foo_next(set, foo[0]) == foo[1]); + ok1(jbit_foo_next(set, foo[NUM-1]) == (struct foo *)NULL); + ok1(jbit_foo_prev(set, foo[1]) == foo[0]); + ok1(jbit_foo_prev(set, foo[0]) == (struct foo *)NULL); + ok1(jbit_foo_error(set) == NULL); + jbit_foo_free(set); + + return exit_status(); +}