test.h 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. /* Copyright 2001,2002,2003 Roger Dingledine, Matej Pfajfar. */
  2. /* See LICENSE for licensing information */
  3. /* $Id$ */
  4. #ifndef __TEST_H
  5. #define __TEST_H
  6. #include <string.h>
  7. #define STMT_BEGIN do {
  8. #define STMT_END } while (0)
  9. #ifdef __GNUC__
  10. #define PRETTY_FUNCTION __PRETTY_FUNCTION__
  11. #else
  12. #define PRETTY_FUNCTION ""
  13. #endif
  14. #define test_fail() \
  15. STMT_BEGIN \
  16. printf("\nFile %s: line %d (%s): assertion failed.", \
  17. __FILE__, \
  18. __LINE__, \
  19. PRETTY_FUNCTION); \
  20. return; \
  21. STMT_END
  22. #define test_assert(expr) \
  23. STMT_BEGIN \
  24. if(expr) { printf("."); } else { \
  25. printf("\nFile %s: line %d (%s): assertion failed: (%s)\n", \
  26. __FILE__, \
  27. __LINE__, \
  28. PRETTY_FUNCTION, \
  29. #expr); \
  30. return; \
  31. } STMT_END
  32. #define test_eq(expr1, expr2) \
  33. STMT_BEGIN \
  34. long v1=(long)(expr1), v2=(long)(expr2); \
  35. if(v1==v2) { printf("."); } else { \
  36. printf("\nFile %s: line %d (%s): Assertion failed: (%s==%s)\n"\
  37. " (%ld != %ld)\n", \
  38. __FILE__, \
  39. __LINE__, \
  40. PRETTY_FUNCTION, \
  41. #expr1, #expr2, \
  42. v1, v2); \
  43. return; \
  44. } STMT_END
  45. #define test_neq(expr1, expr2) \
  46. STMT_BEGIN \
  47. long v1=(long)(expr1), v2=(long)(expr2); \
  48. if(v1!=v2) { printf("."); } else { \
  49. printf("\nFile %s: line %d (%s): Assertion failed: (%s!=%s)\n"\
  50. " (%ld == %ld)\n", \
  51. __FILE__, \
  52. __LINE__, \
  53. PRETTY_FUNCTION, \
  54. #expr1, #expr2, \
  55. v1, v2); \
  56. return; \
  57. } STMT_END
  58. #define test_streq(expr1, expr2) \
  59. STMT_BEGIN \
  60. char *v1=(expr1), *v2=(expr2); \
  61. if(!strcmp(v1,v2)) { printf("."); } else { \
  62. printf("\nFile %s: line %d (%s): Assertion failed: (%s==%s)\n"\
  63. " (\"%s\" != \"%s\")\n", \
  64. __FILE__, \
  65. __LINE__, \
  66. PRETTY_FUNCTION, \
  67. #expr1, #expr2, \
  68. v1, v2); \
  69. return; \
  70. } STMT_END
  71. #define test_strneq(expr1, expr2) \
  72. STMT_BEGIN \
  73. char *v1=(expr1), *v2=(expr2); \
  74. if(strcmp(v1,v2)) { printf("."); } else { \
  75. printf("\nFile %s: line %d (%s): Assertion failed: (%s!=%s)\n"\
  76. " (\"%s\" == \"%s\")\n", \
  77. __FILE__, \
  78. __LINE__, \
  79. PRETTY_FUNCTION, \
  80. #expr1, #expr2, \
  81. v1, v2); \
  82. return; \
  83. } STMT_END
  84. #define test_memeq(expr1, expr2, len) \
  85. STMT_BEGIN \
  86. void *v1=(expr1), *v2=(expr2); \
  87. if(!memcmp(v1,v2,(len))) { printf("."); } else { \
  88. printf("\nFile %s: line %d (%s): Assertion failed: (%s==%s)\n", \
  89. __FILE__, \
  90. __LINE__, \
  91. PRETTY_FUNCTION, \
  92. #expr1, #expr2); \
  93. return; \
  94. } STMT_END
  95. #define test_memneq(expr1, expr2, len) \
  96. STMT_BEGIN \
  97. void *v1=(expr1), *v2=(expr2); \
  98. if(memcmp(v1,v2,(len))) { printf("."); } else { \
  99. printf("\nFile %s: line %d (%s): Assertion failed: (%s!=%s)\n", \
  100. __FILE__, \
  101. __LINE__, \
  102. PRETTY_FUNCTION, \
  103. #expr1, #expr2); \
  104. return; \
  105. } STMT_END
  106. #endif
  107. /*
  108. Local Variables:
  109. mode:c
  110. indent-tabs-mode:nil
  111. c-basic-offset:2
  112. End:
  113. */