/* * NICE-Core - efficient algebra and computer vision methods * - libfbasics - library of some basic tools * See file License for license information. */ #ifndef _CPPUNITEX_BASICVECTOR_H #define _CPPUNITEX_BASICVECTOR_H #ifdef NICE_USELIB_CPPUNIT #include #include #include /** * CppUnit macro asserting equality of double vectors. */ #define CPPUNIT_ASSERT_DOUBLEVECTORS_EQUAL_NOT_NAN_STREAMABLE(a,b,c,s) \ { \ CPPUNIT_ASSERT_EQUAL((a).size(), (b).size()); \ bool uaieuaieOK = true; \ for (uint uiaeuiae = 0; uiaeuiae < (a).size(); ++uiaeuiae) { \ if (!isZero((a)[uiaeuiae] - (b)[uiaeuiae], (c)) \ || NICE::isNaN((b)[uiaeuiae])) { \ uaieuaieOK = false; \ break; \ } \ } \ CPPUNIT_ASSERT_STREAMABLE(uaieuaieOK, \ "vector equality assertion failed. " << s << std::endl \ << "- Expected: " << (a) << std::endl \ << "- Actual : " << (b) << std::endl); \ } /** * CppUnit macro asserting equality of double vectors. */ #define CPPUNIT_ASSERT_DOUBLEVECTORS_EQUAL_NOT_NAN(a,b,c) \ CPPUNIT_ASSERT_DOUBLEVECTORS_EQUAL_NOT_NAN_STREAMABLE(a,b,c,"") /** * CppUnit macro asserting equality of double vectors. */ #define CPPUNIT_ASSERT_DOUBLEMATRICES_EQUAL_NOT_NAN_STREAMABLE(a,b,c,s) \ { \ CPPUNIT_ASSERT_EQUAL((a).rows(), (b).rows()); \ CPPUNIT_ASSERT_EQUAL((a).cols(), (b).cols()); \ bool uaieuaieOK = true; \ for (uint uiaeuiae = 0; uiaeuiae < (a).cols(); ++uiaeuiae) { \ for (uint uiaeuiae2 = 0; uiaeuiae2 < (a).rows(); ++uiaeuiae2) { \ if (!isZero((a)(uiaeuiae,uiaeuiae2) - (b)(uiaeuiae, uiaeuiae2), (c)) \ || NICE::isNaN((b)(uiaeuiae, uiaeuiae2))) {\ uaieuaieOK = false; \ break; \ } \ } \ } \ CPPUNIT_ASSERT_STREAMABLE(uaieuaieOK, \ "matrix equality assertion failed. " << s << std::endl \ << "- Expected: " << (a) \ << "- Actual : " << (b)); \ } #define CPPUNIT_ASSERT_DOUBLEMATRICES_EQUAL_NOT_NAN(a,b,c) \ CPPUNIT_ASSERT_DOUBLEMATRICES_EQUAL_NOT_NAN_STREAMABLE(a,b,c,"") #endif // NICE_USELIB_CPPUNIT #endif // _CPPUNITEX_BASICVECTOR_H