forked from boostorg/container
Fixes #152 ("Tree-based containers have troubles with move-only types")
This commit is contained in:
+42
-15
@@ -401,21 +401,48 @@ int map_test_insert(MyBoostMap &boostmap, MyStdMap &stdmap, MyBoostMultiMap &boo
|
||||
if(!CheckEqualPairContainers(boostmap, stdmap)) return 1;
|
||||
if(!CheckEqualPairContainers(boostmultimap, stdmultimap)) return 1;
|
||||
|
||||
//Swapping test
|
||||
MyBoostMap tmpboostemap2;
|
||||
MyStdMap tmpstdmap2;
|
||||
MyBoostMultiMap tmpboostemultimap2;
|
||||
MyStdMultiMap tmpstdmultimap2;
|
||||
boostmap.swap(tmpboostemap2);
|
||||
stdmap.swap(tmpstdmap2);
|
||||
boostmultimap.swap(tmpboostemultimap2);
|
||||
stdmultimap.swap(tmpstdmultimap2);
|
||||
boostmap.swap(tmpboostemap2);
|
||||
stdmap.swap(tmpstdmap2);
|
||||
boostmultimap.swap(tmpboostemultimap2);
|
||||
stdmultimap.swap(tmpstdmultimap2);
|
||||
if(!CheckEqualPairContainers(boostmap, stdmap)) return 1;
|
||||
if(!CheckEqualPairContainers(boostmultimap, stdmultimap)) return 1;
|
||||
{
|
||||
//Swapping test
|
||||
MyBoostMap tmpboostemap2;
|
||||
MyStdMap tmpstdmap2;
|
||||
MyBoostMultiMap tmpboostemultimap2;
|
||||
MyStdMultiMap tmpstdmultimap2;
|
||||
boostmap.swap(tmpboostemap2);
|
||||
stdmap.swap(tmpstdmap2);
|
||||
boostmultimap.swap(tmpboostemultimap2);
|
||||
stdmultimap.swap(tmpstdmultimap2);
|
||||
boostmap.swap(tmpboostemap2);
|
||||
stdmap.swap(tmpstdmap2);
|
||||
boostmultimap.swap(tmpboostemultimap2);
|
||||
stdmultimap.swap(tmpstdmultimap2);
|
||||
if(!CheckEqualPairContainers(boostmap, stdmap)) return 1;
|
||||
if(!CheckEqualPairContainers(boostmultimap, stdmultimap)) return 1;
|
||||
}
|
||||
|
||||
//move constructor/assignment
|
||||
{
|
||||
MyBoostMap tmpboostemap2(boost::move(boostmap));
|
||||
if(!CheckEqualContainers(tmpboostemap2, stdmap)){
|
||||
std::cout << "Error in boostmap move constructor" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
MyBoostMultiMap tmpboostemultimap2(boost::move(boostmultimap));
|
||||
if(!CheckEqualContainers(tmpboostemultimap2, stdmultimap)){
|
||||
std::cout << "Error in boostmultimap move constructor" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
boostmap = boost::move(tmpboostemap2);
|
||||
if(!CheckEqualContainers(boostmap, stdmap)){
|
||||
std::cout << "Error in boostmap move assignment" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
boostmultimap = boost::move(tmpboostemultimap2);
|
||||
if(!CheckEqualContainers(boostmultimap, stdmultimap)){
|
||||
std::cout << "Error in boostmultimap move assignment" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
+47
-21
@@ -112,7 +112,7 @@ int set_test_copyable(boost::container::dtl::true_type)
|
||||
return 1;
|
||||
}
|
||||
{
|
||||
//Now, test copy constructor
|
||||
//Now, test copy constructor with allocator
|
||||
MyBoostSet boostsetcopy(boostset, typename MyBoostSet::allocator_type());
|
||||
MyStdSet stdsetcopy(stdset);
|
||||
|
||||
@@ -347,28 +347,54 @@ int set_test ()
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Swapping test
|
||||
MyBoostSet tmpboosteset2;
|
||||
MyStdSet tmpstdset2;
|
||||
MyBoostMultiSet tmpboostemultiset2;
|
||||
MyStdMultiSet tmpstdmultiset2;
|
||||
boostset.swap(tmpboosteset2);
|
||||
stdset.swap(tmpstdset2);
|
||||
boostmultiset.swap(tmpboostemultiset2);
|
||||
stdmultiset.swap(tmpstdmultiset2);
|
||||
boostset.swap(tmpboosteset2);
|
||||
stdset.swap(tmpstdset2);
|
||||
boostmultiset.swap(tmpboostemultiset2);
|
||||
stdmultiset.swap(tmpstdmultiset2);
|
||||
if(!CheckEqualContainers(boostset, stdset)){
|
||||
std::cout << "Error in boostset.swap(tmpboosteset2)" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
if(!CheckEqualContainers(boostmultiset, stdmultiset)){
|
||||
std::cout << "Error in boostmultiset.swap(tmpboostemultiset2)" << std::endl;
|
||||
return 1;
|
||||
{
|
||||
//Swapping test
|
||||
MyBoostSet tmpboosteset2;
|
||||
MyStdSet tmpstdset2;
|
||||
MyBoostMultiSet tmpboostemultiset2;
|
||||
MyStdMultiSet tmpstdmultiset2;
|
||||
boostset.swap(tmpboosteset2);
|
||||
stdset.swap(tmpstdset2);
|
||||
boostmultiset.swap(tmpboostemultiset2);
|
||||
stdmultiset.swap(tmpstdmultiset2);
|
||||
boostset.swap(tmpboosteset2);
|
||||
stdset.swap(tmpstdset2);
|
||||
boostmultiset.swap(tmpboostemultiset2);
|
||||
stdmultiset.swap(tmpstdmultiset2);
|
||||
if(!CheckEqualContainers(boostset, stdset)){
|
||||
std::cout << "Error in boostset.swap(tmpboosteset2)" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
if(!CheckEqualContainers(boostmultiset, stdmultiset)){
|
||||
std::cout << "Error in boostmultiset.swap(tmpboostemultiset2)" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
//move constructor/assignment
|
||||
{
|
||||
MyBoostSet tmpboosteset2(boost::move(boostset));
|
||||
if(!CheckEqualContainers(tmpboosteset2, stdset)){
|
||||
std::cout << "Error in boostset move constructor " << std::endl;
|
||||
return 1;
|
||||
}
|
||||
MyBoostMultiSet tmpboostemultiset2(boost::move(boostmultiset));
|
||||
if(!CheckEqualContainers(tmpboostemultiset2, stdmultiset)){
|
||||
std::cout << "Error in boostmultiset move constructor" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
boostset = boost::move(tmpboosteset2);
|
||||
if(!CheckEqualContainers(boostset, stdset)){
|
||||
std::cout << "Error in boostset move assignment" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
boostmultiset = boost::move(tmpboostemultiset2);
|
||||
if(!CheckEqualContainers(boostmultiset, stdmultiset)){
|
||||
std::cout << "Error in boostmultiset move assignment" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
//Insertion from other container
|
||||
//Initialize values
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user