run.c 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include <ccan/strset/strset.h>
  2. #include <ccan/strset/strset.c>
  3. #include <ccan/tap/tap.h>
  4. int main(void)
  5. {
  6. struct strset set;
  7. const char str[] = "hello";
  8. const char none[] = "";
  9. char *dup = strdup(str);
  10. /* This is how many tests you plan to run */
  11. plan_tests(26);
  12. strset_init(&set);
  13. ok1(!strset_test(&set, str));
  14. ok1(!strset_test(&set, none));
  15. ok1(!strset_clear(&set, str));
  16. ok1(!strset_clear(&set, none));
  17. ok1(strset_set(&set, str));
  18. ok1(strset_test(&set, str));
  19. /* We compare the string, not the pointer. */
  20. ok1(strset_test(&set, dup));
  21. ok1(!strset_test(&set, none));
  22. /* Add of duplicate should fail. */
  23. ok1(!strset_set(&set, dup));
  24. ok1(errno == EEXIST);
  25. /* Delete should return original string. */
  26. ok1(strset_clear(&set, dup) == str);
  27. ok1(!strset_test(&set, str));
  28. ok1(!strset_test(&set, none));
  29. /* Try insert and delete of empty string. */
  30. ok1(strset_set(&set, none));
  31. ok1(strset_test(&set, none));
  32. ok1(!strset_test(&set, str));
  33. /* Delete should return original string. */
  34. ok1(strset_clear(&set, "") == none);
  35. ok1(!strset_test(&set, str));
  36. ok1(!strset_test(&set, none));
  37. /* Both at once... */
  38. ok1(strset_set(&set, none));
  39. ok1(strset_set(&set, str));
  40. ok1(strset_test(&set, str));
  41. ok1(strset_test(&set, none));
  42. ok1(strset_clear(&set, "") == none);
  43. ok1(strset_clear(&set, dup) == str);
  44. ok1(set.u.n == NULL);
  45. free(dup);
  46. /* This exits depending on whether all tests passed */
  47. return exit_status();
  48. }