ComSDK
 Указатель Классы Пространства имен Функции Переменные Определения типов Перечисления Элементы перечислений Друзья Группы Страницы
testtools.h
1 #include <boost/detail/lightweight_test.hpp>
2 
3 #include <functional>
4 #include <limits>
5 
6 namespace com {
7  namespace test {
8  template <class Container, class Data>
9  void testContainer(Container& cont, Container& checkCont, std::function<void(Data&, Data&)> checker)
10  {
11  auto contIt = cont.begin();
12  auto checkContIt = checkCont.begin();
13  for(; contIt != cont.end(); ++contIt, ++checkContIt)
14  {
15  checker(*contIt, *checkContIt);
16  }
17  }
18 
19  template<class T>
20  void equal(const T& a, const T& b)
21  {
22  BOOST_TEST_EQ(a, b);
23  }
24 
25  template<class T>
26  typename std::enable_if<!std::numeric_limits<T>::is_integer, void>::type
27  machine_close(const T& a, const T& b)
28  {
29  // Реализация с cppreference.com
30  bool close = std::abs(a-b) <= std::numeric_limits<T>::epsilon() * std::max(std::abs(a), std::abs(b));
31  BOOST_TEST(close);
32  }
33  }
34 }