Test.h 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #ifndef CORE_TEST_H
  2. #define CORE_TEST_H
  3. #include "core/Types.h"
  4. void finalizeTests(void);
  5. #define TEST_ARGS const char *file, int line
  6. #define TEST_FUNCTION(name, type) \
  7. bool test##name(TEST_ARGS, type wanted, type actual)
  8. TEST_FUNCTION(Int, int);
  9. TEST_FUNCTION(I32, i32);
  10. TEST_FUNCTION(I64, i64);
  11. TEST_FUNCTION(U32, u32);
  12. TEST_FUNCTION(U64, u64);
  13. TEST_FUNCTION(Size, size_t);
  14. TEST_FUNCTION(Bool, bool);
  15. TEST_FUNCTION(String, const char*);
  16. bool testFloat(TEST_ARGS, float wanted, float actual, float error);
  17. bool testNull(TEST_ARGS, const void* p);
  18. bool testNotNull(TEST_ARGS, const void* p);
  19. #define TEST(wanted, actual, name) \
  20. test##name(__FILE__, __LINE__, wanted, actual)
  21. #define TEST_FLOAT(wanted, actual, error) \
  22. testFloat(__FILE__, __LINE__, wanted, actual, error)
  23. #define TEST_BOOL(wanted, actual) TEST(wanted, actual, Bool)
  24. #define TEST_INT(wanted, actual) TEST(wanted, actual, Int)
  25. #define TEST_I32(wanted, actual) TEST(wanted, actual, I32)
  26. #define TEST_I64(wanted, actual) TEST(wanted, actual, I64)
  27. #define TEST_U32(wanted, actual) TEST(wanted, actual, U32)
  28. #define TEST_U64(wanted, actual) TEST(wanted, actual, U64)
  29. #define TEST_SIZE(wanted, actual) TEST(wanted, actual, Size)
  30. #define TEST_STRING(wanted, actual) TEST(wanted, actual, String)
  31. #define TEST_FALSE(actual) TEST(false, actual, Bool)
  32. #define TEST_TRUE(actual) TEST(true, actual, Bool)
  33. #define TEST_NULL(actual) testNull(__FILE__, __LINE__, actual)
  34. #define TEST_NOT_NULL(actual) testNotNull(__FILE__, __LINE__, actual)
  35. bool testVectorN(TEST_ARGS, const float* wanted, const float* actual, size_t n);
  36. #define TEST_VN(wanted, actual, n) \
  37. testVectorN(__FILE__, __LINE__, (wanted)->data, (actual)->data, n)
  38. #define TEST_V2(wanted, actual) \
  39. TEST_VN((Vector2*)(wanted), (Vector2*)(actual), 2)
  40. #define TEST_V3(wanted, actual) \
  41. TEST_VN((Vector3*)(wanted), (Vector3*)(actual), 3)
  42. #define TEST_V4(wanted, actual) \
  43. TEST_VN((Vector4*)(wanted), (Vector4*)(actual), 4)
  44. bool testIntVectorN(TEST_ARGS, const int* wanted, const int* actual, size_t n);
  45. #define TEST_IVN(wanted, actual, n) \
  46. testIntVectorN(__FILE__, __LINE__, (wanted)->data, (actual)->data, n)
  47. #define TEST_IV2(wanted, actual) \
  48. TEST_IVN((IntVector2*)(wanted), (IntVector2*)(actual), 2)
  49. #define TEST_IV3(wanted, actual) \
  50. TEST_IVN((IntVector3*)(wanted), (IntVector3*)(actual), 3)
  51. #define TEST_IV4(wanted, actual) \
  52. TEST_IVN((IntVector4*)(wanted), (IntVector4*)(actual), 4)
  53. #endif