cppunitex.h 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /*
  2. * NICE-Core - efficient algebra and computer vision methods
  3. * - libfbasics - library of some basic tools
  4. * See file License for license information.
  5. */
  6. #ifndef _CPPUNITEX_BASICVECTOR_H
  7. #define _CPPUNITEX_BASICVECTOR_H
  8. #ifdef NICE_USELIB_CPPUNIT
  9. #include <cppunit/extensions/HelperMacros.h>
  10. #include <core/basics/numerictools.h>
  11. #include <core/basics/cppunitex.h>
  12. /**
  13. * CppUnit macro asserting equality of double vectors.
  14. */
  15. #define CPPUNIT_ASSERT_DOUBLEVECTORS_EQUAL_NOT_NAN_STREAMABLE(a,b,c,s) \
  16. { \
  17. CPPUNIT_ASSERT_EQUAL((a).size(), (b).size()); \
  18. bool uaieuaieOK = true; \
  19. for (uint uiaeuiae = 0; uiaeuiae < (a).size(); ++uiaeuiae) { \
  20. if (!isZero((a)[uiaeuiae] - (b)[uiaeuiae], (c)) \
  21. || NICE::isNaN((b)[uiaeuiae])) { \
  22. uaieuaieOK = false; \
  23. break; \
  24. } \
  25. } \
  26. CPPUNIT_ASSERT_STREAMABLE(uaieuaieOK, \
  27. "vector equality assertion failed. " << s << std::endl \
  28. << "- Expected: " << (a) << std::endl \
  29. << "- Actual : " << (b) << std::endl); \
  30. }
  31. /**
  32. * CppUnit macro asserting equality of double vectors.
  33. */
  34. #define CPPUNIT_ASSERT_DOUBLEVECTORS_EQUAL_NOT_NAN(a,b,c) \
  35. CPPUNIT_ASSERT_DOUBLEVECTORS_EQUAL_NOT_NAN_STREAMABLE(a,b,c,"")
  36. /**
  37. * CppUnit macro asserting equality of double vectors.
  38. */
  39. #define CPPUNIT_ASSERT_DOUBLEMATRICES_EQUAL_NOT_NAN_STREAMABLE(a,b,c,s) \
  40. { \
  41. CPPUNIT_ASSERT_EQUAL((a).rows(), (b).rows()); \
  42. CPPUNIT_ASSERT_EQUAL((a).cols(), (b).cols()); \
  43. bool uaieuaieOK = true; \
  44. for (uint uiaeuiae = 0; uiaeuiae < (a).cols(); ++uiaeuiae) { \
  45. for (uint uiaeuiae2 = 0; uiaeuiae2 < (a).rows(); ++uiaeuiae2) { \
  46. if (!isZero((a)(uiaeuiae,uiaeuiae2) - (b)(uiaeuiae, uiaeuiae2), (c)) \
  47. || NICE::isNaN((b)(uiaeuiae, uiaeuiae2))) {\
  48. uaieuaieOK = false; \
  49. break; \
  50. } \
  51. } \
  52. } \
  53. CPPUNIT_ASSERT_STREAMABLE(uaieuaieOK, \
  54. "matrix equality assertion failed. " << s << std::endl \
  55. << "- Expected: " << (a) \
  56. << "- Actual : " << (b)); \
  57. }
  58. #define CPPUNIT_ASSERT_DOUBLEMATRICES_EQUAL_NOT_NAN(a,b,c) \
  59. CPPUNIT_ASSERT_DOUBLEMATRICES_EQUAL_NOT_NAN_STREAMABLE(a,b,c,"")
  60. #endif // NICE_USELIB_CPPUNIT
  61. #endif // _CPPUNITEX_BASICVECTOR_H