2014-12-01 64 views
1

是否有可能BOOST__EQUAL_COLLECTIONboost::range这样的组合,我可以简化:如何将boost :: range与BOOST_ <level> _EQUAL_COLLECTION结合起来?

#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. 

这真的没有那么有用。

回答

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 }); 
相关问题