test_assert.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /*
  2. * Assert definitions for tests.
  3. *
  4. * Copyright (c) 2020 Dmitry V. Levin <ldv@altlinux.org>
  5. */
  6. #ifndef TEST_ASSERT_H
  7. # define TEST_ASSERT_H
  8. # ifdef HAVE_CONFIG_H
  9. # include <config.h>
  10. # endif
  11. # include <stdio.h>
  12. # include <stdlib.h>
  13. # define ASSERT_(expected_, expected_str_, op_, seen_, seen_str_) \
  14. do { \
  15. __typeof__(expected_) e_ = (expected_); \
  16. __typeof__(seen_) s_ = (seen_); \
  17. if (e_ op_ s_) break; \
  18. fprintf(stderr, \
  19. "%s:%d: Assertion failed: %s (%#lx) %s %s (%#lx)\n", \
  20. __FILE__, __LINE__, \
  21. (expected_str_), (unsigned long) e_, #op_, \
  22. (seen_str_), (unsigned long) s_); \
  23. abort(); \
  24. } while (0) \
  25. /* End of ASSERT_ definition. */
  26. # define ASSERT_EQ(expected_, seen_) \
  27. ASSERT_((expected_), #expected_, ==, (seen_), #seen_) \
  28. /* End of ASSERT_EQ definition. */
  29. # define ASSERT_NE(expected_, seen_) \
  30. ASSERT_((expected_), #expected_, !=, (seen_), #seen_) \
  31. /* End of ASSERT_NE definition. */
  32. # define ASSERT_LT(expected_, seen_) \
  33. ASSERT_((expected_), #expected_, <, (seen_), #seen_) \
  34. /* End of ASSERT_LT definition. */
  35. # define ASSERT_LE(expected_, seen_) \
  36. ASSERT_((expected_), #expected_, <=, (seen_), #seen_) \
  37. /* End of ASSERT_LT definition. */
  38. # define ASSERT_GT(expected_, seen_) \
  39. ASSERT_((expected_), #expected_, >, (seen_), #seen_) \
  40. /* End of ASSERT_LT definition. */
  41. # define ASSERT_GE(expected_, seen_) \
  42. ASSERT_((expected_), #expected_, >=, (seen_), #seen_) \
  43. /* End of ASSERT_LT definition. */
  44. #endif /* TEST_ASSERT_H */