BOOST_CHECK_CLOSE的一个版本,用于处理绝对差异

A version of BOOST_CHECK_CLOSE that deals with absolute differences

本文关键字:处理 用于 版本 CLOSE CHECK BOOST 一个      更新时间:2023-10-16

是否有BOOST_CHECK_CLOSE版本可以使用绝对差异而不是百分比?在某些情况下,绝对差异更有意义,例如,当我们处理金钱时(是的,我知道双倍并不是最好的类型),我们可能会检查答案是否接近一分钱。还有许多其他的例子。

使用例如BOOST _CHECK_SMALL自己编写其中一个是相当琐碎的,但我认为正确宏的详细输出会使错误更容易跟踪。

TBH,我不理解BOOST_CHECK_SMALL:的问题

double val = func(); //should be between 95 and 105
BOOST_CHECK_SMALL(val - 100, 5);

然而,如果它看起来更像CHECK_CLOSE,那么你就必须像boost那样滚动你自己的宏——只需深入到相应的标题中。您可能需要添加自己的检查类型枚举值,创建一个谓词并在宏中使用它。

或者使用BOOST_CHECK_PREDICATE,老实说,它看起来比CHECK_SMALL丑得多,但有一点不同。或者简单地将BOOST_CHECK与返回谓词的自定义函数一起使用,但我认为这太过分了。