我正在尝试为矢量编写测试。 对于STL容器,我试过:
EXPECT_THAT(float_vec1, ElementsAreArray(float_vec2));
但是我需要插入一个保证金。
是否ElementsAreArray
相当于FloatNear(a_float, max_abs_error)
?
答案 0 :(得分:0)
是的,我使用了Pointwise
容器匹配器,您可以为其提供匹配器和预期的容器(任何STL容器,并且与非动态分配的c样式数组兼容)。
EXPECT_THAT(float_vec1, Pointwise(matcher, float_vec2))
对于匹配器,您可以使用FloatEq()
,它使用基于ULP的浮点比较。
EXPECT_THAT(float_vec1, Pointwise(FloatEq(), float_vec2))
但是,我发现使用FloatNear(float max_abs_error)
可以轻松定义自己的浮点错误,
float ferr = 1e-5;
EXPECT_THAT(float_vec1,
Pointwise(FloatNear(ferr), float_vec2));