googletest - gmock:测试两个浮点向量
问题描述
我正在尝试为向量编写测试。对于 STL 容器,我尝试过:
EXPECT_THAT(float_vec1, ElementsAreArray(float_vec2));
但是我需要插入一个边距。
有没有ElementsAreArray
等价物FloatNear(a_float, max_abs_error)
?
解决方案
是的,我使用了Pointwise
容器匹配器,你可以给它一个匹配器和一个预期的容器(任何 STL 容器并且与非动态分配的 c 样式数组兼容)。
EXPECT_THAT(float_vec1, Pointwise(matcher, float_vec2))
对于匹配器,您可以使用FloatEq()
which 使用基于 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));
推荐阅读
- python - 使用函数调用对象方法
- python - django - 为 RelatedManager 创建自定义查询集
- javascript - knockout.js 点击绑定不调用 viewmodel 函数
- django - 如何在鹡鸰中创建自定义块?
- reactjs - 无法预览/下载大于 1.5 MB 的文件
- python - 按字母顺序显示列表
- java - 如何从 Hibernate 配置工具中修复“读取数据库架构时出现问题”
- opencv - 如何校准围绕一个圆圈设置的 4 个摄像头?
- r - 表达式失败时使用 `tryCatch` 并打印错误消息
- oauth-2.0 - 订阅资源时使用 Oauth 的 Exchange Webservice 引发错误