X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fstrset%2Ftest%2Frun.c;fp=ccan%2Fstrset%2Ftest%2Frun.c;h=557c7080aaba6af5939c97b53df4435db5df9e97;hb=ab83de953730f5e5e571dbf69ffb3cc685a102dc;hp=0000000000000000000000000000000000000000;hpb=0845e79650c9257aa0ddef8ff99fd815b5edffac;p=ccan diff --git a/ccan/strset/test/run.c b/ccan/strset/test/run.c new file mode 100644 index 00000000..557c7080 --- /dev/null +++ b/ccan/strset/test/run.c @@ -0,0 +1,56 @@ +#include +#include +#include + +int main(void) +{ + struct strset set; + const char str[] = "hello"; + const char none[] = ""; + char *dup = strdup(str); + + /* This is how many tests you plan to run */ + plan_tests(24); + + strset_init(&set); + + ok1(!strset_test(&set, str)); + ok1(!strset_test(&set, none)); + ok1(!strset_clear(&set, str)); + ok1(!strset_clear(&set, none)); + + ok1(strset_set(&set, str)); + ok1(strset_test(&set, str)); + /* We compare the string, not the pointer. */ + ok1(strset_test(&set, dup)); + ok1(!strset_test(&set, none)); + + /* Delete should return original string. */ + ok1(strset_clear(&set, dup) == str); + ok1(!strset_test(&set, str)); + ok1(!strset_test(&set, none)); + + /* Try insert and delete of empty string. */ + ok1(strset_set(&set, none)); + ok1(strset_test(&set, none)); + ok1(!strset_test(&set, str)); + + /* Delete should return original string. */ + ok1(strset_clear(&set, "") == none); + ok1(!strset_test(&set, str)); + ok1(!strset_test(&set, none)); + + /* Both at once... */ + ok1(strset_set(&set, none)); + ok1(strset_set(&set, str)); + ok1(strset_test(&set, str)); + ok1(strset_test(&set, none)); + ok1(strset_clear(&set, "") == none); + ok1(strset_clear(&set, dup) == str); + + ok1(set.u.n == NULL); + free(dup); + + /* This exits depending on whether all tests passed */ + return exit_status(); +}