是否可以将BOOST__EQUAL_COLLECTION与boost::range合并,以便我可以简化:
#include <boost/test/unit_test.hpp>
std::vector<int> mysort(std::vector<int>);
...
auto lhs = mysort({ 11, 7, 5, 3, 2 });
const std::vector<int> rhs = { 2, 3, 5, 7, 11 };
BOOST_CHECK_EQUAL_COLLECTIONS(lhs.begin(), lhs.end(), rhs.begin(), rhs.end());
类似
BOOST_CHECK_EQUAL_COLLECTIONS(mysort({ 11, 7, 5, 3, 2 }), { 2, 3, 5, 7, 11 });
除了不那么冗长之外,我还看到了一个更有用的警告的额外好处,目前的内容是:
error in "foo": check { lhs.begin(), lhs.end() } == { rhs.begin(), rhs.end() } failed.
真的没那么有用。
答案 0 :(得分:1)
我害怕boost::range
在这里帮助你。问题在于如何定义BOOST_CHECK_EQUAL_COLLECTIONS
。
您可以自己定义一个宏:
#define COLLECTIONS_CHECK_EQUAL(a, b) BOOST_CHECK_EQUAL_COLLECTIONS(std::begin(a), std::end(a), std::begin(b), std::end(b))
并将其用作:
COLLECTIONS_CHECK_EQUAL(mysort(std::vector<int>{ 11, 7, 5, 3, 2 }), std::vector<int>{ 2, 3, 5, 7, 11 });