2014-12-01 56 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 }); 
相關問題