testhelper.hpp 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. // Copyright 2008 Gunter Winkler <guwi17@gmx.de>
  2. // Distributed under the Boost Software License, Version 1.0. (See
  3. // accompanying file LICENSE_1_0.txt or copy at
  4. // http://www.boost.org/LICENSE_1_0.txt)
  5. #ifndef _HPP_TESTHELPER_
  6. #define _HPP_TESTHELPER_
  7. #include <utility>
  8. static unsigned _success_counter = 0;
  9. static unsigned _fail_counter = 0;
  10. static inline void assertTrue(const char* message, bool condition)
  11. {
  12. #ifndef NOMESSAGES
  13. std::cout << message;
  14. #endif
  15. if (condition)
  16. {
  17. ++_success_counter;
  18. std::cout << "1\n"; // success
  19. }
  20. else
  21. {
  22. ++_fail_counter;
  23. std::cout << "0\n"; // failed
  24. }
  25. }
  26. template <class T>
  27. void assertEquals(const char* message, T expected, T actual)
  28. {
  29. #ifndef NOMESSAGES
  30. std::cout << message;
  31. #endif
  32. if (expected == actual)
  33. {
  34. ++_success_counter;
  35. std::cout << "1\n"; // success
  36. }
  37. else
  38. {
  39. #ifndef NOMESSAGES
  40. std::cout << " expected " << expected << " actual " << actual << " ";
  41. #endif
  42. ++_fail_counter;
  43. std::cout << "0\n"; // failed
  44. }
  45. }
  46. static std::pair<unsigned, unsigned> getResults()
  47. {
  48. return std::make_pair(_success_counter, _fail_counter);
  49. }
  50. template <class M1, class M2>
  51. bool compare(const boost::numeric::ublas::matrix_expression<M1>& m1,
  52. const boost::numeric::ublas::matrix_expression<M2>& m2)
  53. {
  54. size_t size1 = (std::min)(m1().size1(), m2().size1());
  55. size_t size2 = (std::min)(m1().size2(), m2().size2());
  56. for (size_t i = 0; i < size1; ++i)
  57. {
  58. for (size_t j = 0; j < size2; ++j)
  59. {
  60. if (m1()(i, j) != m2()(i, j))
  61. return false;
  62. }
  63. }
  64. return true;
  65. }
  66. template <class M1, class M2>
  67. bool compare(const boost::numeric::ublas::vector_expression<M1>& m1,
  68. const boost::numeric::ublas::vector_expression<M2>& m2)
  69. {
  70. size_t size = (std::min)(m1().size(), m2().size());
  71. for (size_t i = 0; i < size; ++i)
  72. {
  73. if (m1()(i) != m2()(i))
  74. return false;
  75. }
  76. return true;
  77. }
  78. #endif