有人有使用Eigen和GoogleTest的经验吗?

Anyone have experience using Eigen and GoogleTest together?

本文关键字:经验 GoogleTest Eigen      更新时间:2023-10-16

所以我正在写一个基于数学的图形库。许多类使用特征作为底层数据结构。例如,我的二维矢量类包装了一个Vector2d,并为我的渲染引擎添加了一些特定的功能。我还使用google的测试框架编写了各种各样的测试。

使用这些测试,我在运行测试时得到以下错误:

Assertion failed: (reinterpret_cast<size_t>(array) & 0xf) == 0 && "this assertio
n is explained here: " "http://eigen.tuxfamily.org/dox-devel/group__TopicUnalign
edArrayAssert.html" " **** READ THIS WEB PAGE !!! ****", file c:users***densestorage.h, line 86

我已经浏览了上面指定的文档并修复了我所能修复的一切(我添加了宏来覆盖new和delete),我不使用stl类,并且已经验证了我所有的函数都通过const引用传递。我有一种感觉,问题在于TEST和TEST_F宏的扩展方式。有人知道是怎么回事或者怎么解决吗?

我还应该注意到包含像Vector3d这样的非对齐类型的类没有问题。我想在不关闭内存对齐的情况下解决它,这样我就可以尽可能地保持效率。由于

这对我很有用。

namespace {
struct MyClass {
    Eigen::Vector3f m_v3;
    char m_c;
    double m_d;
    MyClass() {}
};
class MyClassTest : public ::testing::Test {
protected:
    virtual void SetUp() {
    }
    virtual void TearDown() {}
    MyClass m_c;
};
}
TEST_F(MyClassTest, test_eigen2)
{
    this->m_c.m_v3[0] = 0.0;
    this->m_c.m_v3[1] = 1.0;
    this->m_c.m_v3[2] = 2.0;
    for (int i = 0; i < 3; i++)
        ASSERT_FLOAT_EQ(float(i), this->m_c.m_v3[i]);
}