mirror of
https://github.com/boostorg/container.git
synced 2025-08-02 05:54:28 +02:00
Add test for move assignable index operator
This commit is contained in:
@@ -865,8 +865,9 @@ int map_test_search(MyBoostMap &boostmap, MyStdMap &stdmap, MyBoostMultiMap &boo
|
|||||||
template<class MyBoostMap
|
template<class MyBoostMap
|
||||||
, class MyStdMap
|
, class MyStdMap
|
||||||
, class MyBoostMultiMap
|
, class MyBoostMultiMap
|
||||||
, class MyStdMultiMap>
|
, class MyStdMultiMap
|
||||||
int map_test_indexing(MyBoostMap &boostmap, MyStdMap &stdmap, MyBoostMultiMap &boostmultimap, MyStdMultiMap &stdmultimap)
|
, class Other>
|
||||||
|
int map_test_indexing(MyBoostMap &boostmap, MyStdMap &stdmap, MyBoostMultiMap &boostmultimap, MyStdMultiMap &stdmultimap, boost::container::dtl::true_type, Other)
|
||||||
{
|
{
|
||||||
typedef typename MyBoostMap::key_type IntType;
|
typedef typename MyBoostMap::key_type IntType;
|
||||||
typedef dtl::pair<IntType, IntType> IntPairType;
|
typedef dtl::pair<IntType, IntType> IntPairType;
|
||||||
@@ -883,18 +884,102 @@ int map_test_indexing(MyBoostMap &boostmap, MyStdMap &stdmap, MyBoostMultiMap &b
|
|||||||
IntType i2(i);
|
IntType i2(i);
|
||||||
new(&aux_vect[i])IntPairType(boost::move(i1), boost::move(i2));
|
new(&aux_vect[i])IntPairType(boost::move(i1), boost::move(i2));
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
for(int i = 0; i < MaxElem; ++i){
|
for(int i = 0; i < MaxElem; ++i){
|
||||||
boostmap[boost::move(aux_vect[i].first)] = boost::move(aux_vect[i].second);
|
boostmap[boost::move(aux_vect[i].first)] = boost::move(aux_vect[i].second);
|
||||||
stdmap[i] = i;
|
stdmap[i] = i;
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
if(!CheckEqualPairContainers(boostmap, stdmap)) return 1;
|
if(!CheckEqualPairContainers(boostmap, stdmap)) return 1;
|
||||||
if(!CheckEqualPairContainers(boostmultimap, stdmultimap)) return 1;
|
if(!CheckEqualPairContainers(boostmultimap, stdmultimap)) return 1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<class MyBoostMap
|
||||||
|
, class MyStdMap
|
||||||
|
, class MyBoostMultiMap
|
||||||
|
, class MyStdMultiMap>
|
||||||
|
int map_test_indexing_move_assignable(MyBoostMap& boostmap, MyStdMap& stdmap, MyBoostMultiMap& boostmultimap, MyStdMultiMap& stdmultimap, boost::container::dtl::true_type)
|
||||||
|
{
|
||||||
|
typedef typename MyBoostMap::key_type IntType;
|
||||||
|
typedef dtl::pair<IntType, IntType> IntPairType;
|
||||||
|
|
||||||
|
{ //operator[] test
|
||||||
|
boostmap.clear();
|
||||||
|
boostmultimap.clear();
|
||||||
|
stdmap.clear();
|
||||||
|
stdmultimap.clear();
|
||||||
|
|
||||||
|
IntPairType aux_vect[(std::size_t)MaxElem];
|
||||||
|
for (int i = 0; i < MaxElem; ++i) {
|
||||||
|
IntType i1(i);
|
||||||
|
IntType i2(i);
|
||||||
|
new(&aux_vect[i])IntPairType(boost::move(i1), boost::move(i2));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < MaxElem; ++i) {
|
||||||
|
boostmap[boost::move(aux_vect[i].first)] = boost::move(aux_vect[i].second);
|
||||||
|
stdmap[i] = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!CheckEqualPairContainers(boostmap, stdmap)) return 1;
|
||||||
|
if (!CheckEqualPairContainers(boostmultimap, stdmultimap)) return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<class MyBoostMap
|
||||||
|
, class MyStdMap
|
||||||
|
, class MyBoostMultiMap
|
||||||
|
, class MyStdMultiMap>
|
||||||
|
int map_test_indexing_copyable(MyBoostMap& boostmap, MyStdMap& stdmap, MyBoostMultiMap& boostmultimap, MyStdMultiMap& stdmultimap, boost::container::dtl::true_type)
|
||||||
|
{
|
||||||
|
typedef typename MyBoostMap::key_type IntType;
|
||||||
|
typedef dtl::pair<IntType, IntType> IntPairType;
|
||||||
|
|
||||||
|
{ //operator[] test
|
||||||
|
boostmap.clear();
|
||||||
|
boostmultimap.clear();
|
||||||
|
stdmap.clear();
|
||||||
|
stdmultimap.clear();
|
||||||
|
|
||||||
|
IntPairType aux_vect[(std::size_t)MaxElem];
|
||||||
|
for (int i = 0; i < MaxElem; ++i) {
|
||||||
|
IntType i1(i);
|
||||||
|
IntType i2(i);
|
||||||
|
new(&aux_vect[i])IntPairType(boost::move(i1), boost::move(i2));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < MaxElem; ++i) {
|
||||||
|
boostmap[aux_vect[i].first] = boost::move(aux_vect[i].second);
|
||||||
|
stdmap[i] = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!CheckEqualPairContainers(boostmap, stdmap)) return 1;
|
||||||
|
if (!CheckEqualPairContainers(boostmultimap, stdmultimap)) return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<class MyBoostMap
|
||||||
|
, class MyStdMap
|
||||||
|
, class MyBoostMultiMap
|
||||||
|
, class MyStdMultiMap>
|
||||||
|
int map_test_indexing_move_assignable(MyBoostMap& , MyStdMap& , MyBoostMultiMap& , MyStdMultiMap&, boost::container::dtl::false_type)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<class MyBoostMap
|
||||||
|
, class MyStdMap
|
||||||
|
, class MyBoostMultiMap
|
||||||
|
, class MyStdMultiMap>
|
||||||
|
int map_test_indexing_copyable(MyBoostMap&, MyStdMap&, MyBoostMultiMap&, MyStdMultiMap&, boost::container::dtl::false_type)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
template< class MyBoostMap, class StdMap, class MaybeMove>
|
template< class MyBoostMap, class StdMap, class MaybeMove>
|
||||||
int map_test_insert_or_assign_impl()
|
int map_test_insert_or_assign_impl()
|
||||||
{
|
{
|
||||||
@@ -1252,7 +1337,10 @@ int map_test()
|
|||||||
if (map_test_search(boostmap, stdmap, boostmultimap, stdmultimap))
|
if (map_test_search(boostmap, stdmap, boostmultimap, stdmultimap))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
if (map_test_indexing(boostmap, stdmap, boostmultimap, stdmultimap))
|
if (map_test_indexing_move_assignable(boostmap, stdmap, boostmultimap, stdmultimap, move_assignable_t()))
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
if (map_test_indexing_copyable(boostmap, stdmap, boostmultimap, stdmultimap, copyable_t()))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
if (map_test_try_emplace(boostmap, stdmap, boostmultimap, stdmultimap))
|
if (map_test_try_emplace(boostmap, stdmap, boostmultimap, stdmultimap))
|
||||||
|
Reference in New Issue
Block a user