15 #include <gtest/gtest.h>
29 Eigen::Matrix2Xd get_diagonal_covariance(
double x_var = 0.5,
double y_var = 0.8) {
30 return Eigen::Vector2d{x_var, y_var}.asDiagonal();
35 TEST(NDTCellTests, Product) {
37 const NDTCell2d cell{Eigen::Vector2d{1, 2}, get_diagonal_covariance()};
39 const auto transformed = tf * cell;
40 ASSERT_TRUE(cell.mean.isApprox(transformed.mean));
41 ASSERT_TRUE(cell.covariance.isApprox(transformed.covariance));
44 const NDTCell2d cell{Eigen::Vector2d{1, 2}, get_diagonal_covariance()};
46 const auto transformed = tf * cell;
47 ASSERT_TRUE(cell.mean.isApprox(transformed.mean - Eigen::Vector2d{1, 2}));
48 ASSERT_TRUE(cell.covariance.isApprox(transformed.covariance));
51 const NDTCell2d cell{Eigen::Vector2d{1, 2}, get_diagonal_covariance()};
54 Eigen::Matrix<double, 2, 2> expected_transformed_cov;
56 expected_transformed_cov << 0.8, 0.0,
59 const auto transformed = tf * cell;
60 EXPECT_TRUE(transformed.covariance.isApprox(expected_transformed_cov));
61 EXPECT_TRUE(transformed.mean.isApprox(Eigen::Vector2d{-2, 1})) << transformed;
65 TEST(NDTCellTests, Ostream) {
66 const NDTCell2d cell{Eigen::Vector2d{1, 2}, get_diagonal_covariance()};
69 ASSERT_GT(ss.str().size(), 0);