Algorith sandbox
gtest_helper_macro.h
1 #pragma once
2 #include <gtest/gtest.h>
3 
4 #define EXPECT_VECTOR_DOUBLE_EQ(expect, actual) \
5  { \
6  auto expectIter = expect.begin(); \
7  auto actualIter = actual.begin(); \
8  for(; expectIter != expect.end(); ++expectIter, ++actualIter) { \
9  EXPECT_DOUBLE_EQ(*expectIter, *actualIter); \
10  } \
11  }
12 
13 #define EXPECT_VECTOR_NEAR(expect, actual, tolerance) \
14  { \
15  auto expectIter = expect.begin(); \
16  auto actualIter = actual.begin(); \
17  for(; expectIter != expect.end(); ++expectIter, ++actualIter) { \
18  EXPECT_NEAR(*expectIter, *actualIter, tolerance); \
19  } \
20  }
21 
22 #define EXPECT_MATRIX_DOUBLE_EQ(expect, actual) \
23  { \
24  EXPECT_EQ(expect.size1(), actual.size1()); \
25  EXPECT_EQ(expect.size2(), actual.size2()); \
26  for (std::size_t ri = 0; ri < expect.size1(); ++ri) { \
27  for (std::size_t ci = 0; ci < expect.size2(); ++ci) { \
28  EXPECT_DOUBLE_EQ(expect(ri, ci), actual(ri, ci)); \
29  } \
30  } \
31  }
32 
33 #define EXPECT_MATRIX_NEAR(expect, actual, tolerance) \
34  { \
35  EXPECT_EQ(expect.size1(), actual.size1()); \
36  EXPECT_EQ(expect.size2(), actual.size2()); \
37  for (std::size_t ri = 0; ri < expect.size1(); ++ri) { \
38  for (std::size_t ci = 0; ci < expect.size2(); ++ci) { \
39  EXPECT_NEAR(expect(ri, ci), actual(ri, ci), tolerance); \
40  } \
41  } \
42  }
43