I was wondering if there is a good way to test two Eigen matrices for approximate equality using Google Test, or Google Mock.
Take the following test-case as a
EXPECT_PRED2
from GoogleTest can be used for this.
Under C++11 using a lambda works fine but looks unseemly:
ASSERT_PRED2([](const MatrixXf &lhs, const MatrixXf &rhs) {
return lhs.isApprox(rhs, 1e-4);
},
C_expect, C_actual);
If that fails, you get a print-out of the input arguments.
Instead of using a lambda, a normal predicate function can be defined like this:
bool MatrixEquality(const MatrixXf &lhs, const MatrixXf &rhs) {
return lhs.isApprox(rhs, 1e-4);
}
TEST(Eigen, MatrixMultiplication) {
...
ASSERT_PRED2(MatrixEquality, C_expected, C_actual);
}
The later version also works on pre-C++11.