run.c 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #include "config.h"
  2. #include <string.h>
  3. #include <ccan/cppmagic/cppmagic.h>
  4. #include <ccan/tap/tap.h>
  5. static inline void check1(const char *orig, const char *expand,
  6. const char *match)
  7. {
  8. ok(strcmp(expand, match) == 0,
  9. "%s => %s : %s", orig, expand, match);
  10. }
  11. #define CHECK1(orig, match) \
  12. check1(#orig, CPPMAGIC_STRINGIFY(orig), match)
  13. #define TESTRECURSE() R CPPMAGIC_DEFER1(_TESTRECURSE)()()
  14. #define _TESTRECURSE() TESTRECURSE
  15. int main(void)
  16. {
  17. plan_tests(27);
  18. CHECK1(CPPMAGIC_NOTHING(), "");
  19. CHECK1(CPPMAGIC_GLUE2(a, b), "ab");
  20. CHECK1(CPPMAGIC_1ST(a), "a");
  21. CHECK1(CPPMAGIC_1ST(a, b), "a");
  22. CHECK1(CPPMAGIC_1ST(a, b, c), "a");
  23. CHECK1(CPPMAGIC_2ND(a, b), "b");
  24. CHECK1(CPPMAGIC_2ND(a, b, c), "b");
  25. CHECK1(CPPMAGIC_ISZERO(0), "1");
  26. CHECK1(CPPMAGIC_ISZERO(1), "0");
  27. CHECK1(CPPMAGIC_ISZERO(123), "0");
  28. CHECK1(CPPMAGIC_ISZERO(abc), "0");
  29. CHECK1(CPPMAGIC_NONZERO(0), "0");
  30. CHECK1(CPPMAGIC_NONZERO(1), "1");
  31. CHECK1(CPPMAGIC_NONZERO(123), "1");
  32. CHECK1(CPPMAGIC_NONZERO(abc), "1");
  33. CHECK1(CPPMAGIC_NONEMPTY(), "0");
  34. CHECK1(CPPMAGIC_NONEMPTY(0), "1");
  35. CHECK1(CPPMAGIC_NONEMPTY(a, b, c), "1");
  36. CHECK1(CPPMAGIC_ISEMPTY(), "1");
  37. CHECK1(CPPMAGIC_ISEMPTY(0), "0");
  38. CHECK1(CPPMAGIC_ISEMPTY(a, b, c), "0");
  39. CHECK1(CPPMAGIC_IFELSE(0)(abc)(def), "def");
  40. CHECK1(CPPMAGIC_IFELSE(1)(abc)(def), "abc");
  41. CHECK1(CPPMAGIC_IFELSE(not zero)(abc)(def), "abc");
  42. CHECK1(TESTRECURSE(), "R R _TESTRECURSE ()()");
  43. CHECK1(CPPMAGIC_EVAL1(TESTRECURSE()), "R R R _TESTRECURSE ()()");
  44. CHECK1(CPPMAGIC_EVAL2(TESTRECURSE()), "R R R R R _TESTRECURSE ()()");
  45. /* This exits depending on whether all tests passed */
  46. return exit_status();
  47. }