forked from boostorg/container
Updated tests to avoid manual memory management. Replaced with unique_ptr and a reference. Normalized CheckEqualContainers to use references instead of pointers.
This commit is contained in:
@@ -30,6 +30,7 @@
|
||||
#include "input_from_forward_iterator.hpp"
|
||||
#include <boost/move/utility_core.hpp>
|
||||
#include <boost/move/iterator.hpp>
|
||||
#include <boost/move/make_unique.hpp>
|
||||
#include <boost/core/no_exceptions_support.hpp>
|
||||
#include <boost/static_assert.hpp>
|
||||
#include "insert_test.hpp"
|
||||
@@ -39,59 +40,61 @@ namespace container {
|
||||
namespace test{
|
||||
|
||||
template<class V1, class V2>
|
||||
bool vector_copyable_only(V1 *, V2 *, boost::container::container_detail::false_type)
|
||||
bool vector_copyable_only(V1&, V2&, boost::container::container_detail::false_type)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
//Function to check if both sets are equal
|
||||
template<class V1, class V2>
|
||||
bool vector_copyable_only(V1 *boostvector, V2 *stdvector, boost::container::container_detail::true_type)
|
||||
bool vector_copyable_only(V1 &boostvector, V2 &stdvector, boost::container::container_detail::true_type)
|
||||
{
|
||||
typedef typename V1::value_type IntType;
|
||||
std::size_t size = boostvector->size();
|
||||
boostvector->insert(boostvector->end(), 50, IntType(1));
|
||||
stdvector->insert(stdvector->end(), 50, 1);
|
||||
std::size_t size = boostvector.size();
|
||||
boostvector.insert(boostvector.end(), 50, IntType(1));
|
||||
stdvector.insert(stdvector.end(), 50, 1);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return false;
|
||||
|
||||
{
|
||||
IntType move_me(1);
|
||||
boostvector->insert(boostvector->begin()+size/2, 50, boost::move(move_me));
|
||||
stdvector->insert(stdvector->begin()+size/2, 50, 1);
|
||||
boostvector.insert(boostvector.begin()+size/2, 50, boost::move(move_me));
|
||||
stdvector.insert(stdvector.begin()+size/2, 50, 1);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return false;
|
||||
}
|
||||
{
|
||||
IntType move_me(2);
|
||||
boostvector->assign(boostvector->size()/2, boost::move(move_me));
|
||||
stdvector->assign(stdvector->size()/2, 2);
|
||||
boostvector.assign(boostvector.size()/2, boost::move(move_me));
|
||||
stdvector.assign(stdvector.size()/2, 2);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return false;
|
||||
}
|
||||
{
|
||||
IntType move_me(3);
|
||||
boostvector->assign(boostvector->size()*3-1, boost::move(move_me));
|
||||
stdvector->assign(stdvector->size()*3-1, 3);
|
||||
boostvector.assign(boostvector.size()*3-1, boost::move(move_me));
|
||||
stdvector.assign(stdvector.size()*3-1, 3);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return false;
|
||||
}
|
||||
|
||||
{
|
||||
IntType copy_me(3);
|
||||
const IntType ccopy_me(3);
|
||||
boostvector->push_back(copy_me);
|
||||
stdvector->push_back(int(3));
|
||||
boostvector->push_back(ccopy_me);
|
||||
stdvector->push_back(int(3));
|
||||
boostvector.push_back(copy_me);
|
||||
stdvector.push_back(int(3));
|
||||
boostvector.push_back(ccopy_me);
|
||||
stdvector.push_back(int(3));
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return false;
|
||||
}
|
||||
{
|
||||
V1 *pv1 = new V1(*boostvector);
|
||||
V2 *pv2 = new V2(*stdvector);
|
||||
boostvector->clear();
|
||||
stdvector->clear();
|
||||
boostvector->assign(pv1->begin(), pv1->end());
|
||||
stdvector->assign(pv2->begin(), pv2->end());
|
||||
::boost::movelib::unique_ptr<V1> const pv1 = ::boost::movelib::make_unique<V1>(boostvector);
|
||||
::boost::movelib::unique_ptr<V2> const pv2 = ::boost::movelib::make_unique<V2>(stdvector);
|
||||
|
||||
V1 &v1 = *pv1;
|
||||
V2 &v2 = *pv2;
|
||||
|
||||
boostvector.clear();
|
||||
stdvector.clear();
|
||||
boostvector.assign(v1.begin(), v1.end());
|
||||
stdvector.assign(v2.begin(), v2.end());
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
delete pv1;
|
||||
delete pv2;
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -109,221 +112,212 @@ int vector_test()
|
||||
}
|
||||
|
||||
{
|
||||
BOOST_TRY{
|
||||
MyBoostVector *boostvector = new MyBoostVector;
|
||||
MyStdVector *stdvector = new MyStdVector;
|
||||
boostvector->resize(100);
|
||||
stdvector->resize(100);
|
||||
::boost::movelib::unique_ptr<MyBoostVector> const boostvectorp = ::boost::movelib::make_unique<MyBoostVector>();
|
||||
::boost::movelib::unique_ptr<MyStdVector> const stdvectorp = ::boost::movelib::make_unique<MyStdVector>();
|
||||
|
||||
MyBoostVector & boostvector = *boostvectorp;
|
||||
MyStdVector & stdvector = *stdvectorp;
|
||||
|
||||
boostvector.resize(100);
|
||||
stdvector.resize(100);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
boostvector.resize(200);
|
||||
stdvector.resize(200);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
boostvector.resize(0);
|
||||
stdvector.resize(0);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
for(int i = 0; i < max; ++i){
|
||||
IntType new_int(i);
|
||||
boostvector.insert(boostvector.end(), boost::move(new_int));
|
||||
stdvector.insert(stdvector.end(), i);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
boostvector->resize(200);
|
||||
stdvector->resize(200);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
boostvector->resize(0);
|
||||
stdvector->resize(0);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
for(int i = 0; i < max; ++i){
|
||||
IntType new_int(i);
|
||||
boostvector->insert(boostvector->end(), boost::move(new_int));
|
||||
stdvector->insert(stdvector->end(), i);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
}
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
typename MyBoostVector::iterator boostit(boostvector->begin());
|
||||
typename MyStdVector::iterator stdit(stdvector->begin());
|
||||
typename MyBoostVector::const_iterator cboostit = boostit;
|
||||
(void)cboostit;
|
||||
++boostit; ++stdit;
|
||||
boostvector->erase(boostit);
|
||||
stdvector->erase(stdit);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
boostvector->erase(boostvector->begin());
|
||||
stdvector->erase(stdvector->begin());
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
{
|
||||
//Initialize values
|
||||
IntType aux_vect[50];
|
||||
for(int i = 0; i < 50; ++i){
|
||||
IntType new_int(-1);
|
||||
BOOST_STATIC_ASSERT((boost::container::test::is_copyable<boost::container::test::movable_int>::value == false));
|
||||
aux_vect[i] = boost::move(new_int);
|
||||
}
|
||||
int aux_vect2[50];
|
||||
for(int i = 0; i < 50; ++i){
|
||||
aux_vect2[i] = -1;
|
||||
}
|
||||
typename MyBoostVector::iterator insert_it =
|
||||
boostvector->insert(boostvector->end()
|
||||
,boost::make_move_iterator(&aux_vect[0])
|
||||
,boost::make_move_iterator(aux_vect + 50));
|
||||
if(std::size_t(std::distance(insert_it, boostvector->end())) != 50) return 1;
|
||||
stdvector->insert(stdvector->end(), aux_vect2, aux_vect2 + 50);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
for(int i = 0, j = static_cast<int>(boostvector->size()); i < j; ++i){
|
||||
boostvector->erase(boostvector->begin());
|
||||
stdvector->erase(stdvector->begin());
|
||||
}
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
}
|
||||
{
|
||||
boostvector->resize(100);
|
||||
stdvector->resize(100);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
IntType aux_vect[50];
|
||||
for(int i = 0; i < 50; ++i){
|
||||
IntType new_int(-i);
|
||||
aux_vect[i] = boost::move(new_int);
|
||||
}
|
||||
int aux_vect2[50];
|
||||
for(int i = 0; i < 50; ++i){
|
||||
aux_vect2[i] = -i;
|
||||
}
|
||||
typename MyBoostVector::size_type old_size = boostvector->size();
|
||||
typename MyBoostVector::iterator insert_it =
|
||||
boostvector->insert(boostvector->begin() + old_size/2
|
||||
,boost::make_move_iterator(&aux_vect[0])
|
||||
,boost::make_move_iterator(aux_vect + 50));
|
||||
if(boostvector->begin() + old_size/2 != insert_it) return 1;
|
||||
stdvector->insert(stdvector->begin() + old_size/2, aux_vect2, aux_vect2 + 50);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
for(int i = 0; i < 50; ++i){
|
||||
IntType new_int(-i);
|
||||
aux_vect[i] = boost::move(new_int);
|
||||
}
|
||||
|
||||
for(int i = 0; i < 50; ++i){
|
||||
aux_vect2[i] = -i;
|
||||
}
|
||||
old_size = boostvector->size();
|
||||
//Now try with input iterators instead
|
||||
insert_it = boostvector->insert(boostvector->begin() + old_size/2
|
||||
,boost::make_move_iterator(make_input_from_forward_iterator(&aux_vect[0]))
|
||||
,boost::make_move_iterator(make_input_from_forward_iterator(aux_vect + 50))
|
||||
);
|
||||
if(boostvector->begin() + old_size/2 != insert_it) return 1;
|
||||
stdvector->insert(stdvector->begin() + old_size/2, aux_vect2, aux_vect2 + 50);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
}
|
||||
/* //deque has no reserve
|
||||
boostvector->reserve(boostvector->size()*2);
|
||||
stdvector->reserve(stdvector->size()*2);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
*/
|
||||
boostvector->shrink_to_fit();
|
||||
MyStdVector(*stdvector).swap(*stdvector);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
boostvector->shrink_to_fit();
|
||||
MyStdVector(*stdvector).swap(*stdvector);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
{ //push_back with not enough capacity
|
||||
IntType push_back_this(1);
|
||||
boostvector->push_back(boost::move(push_back_this));
|
||||
stdvector->push_back(int(1));
|
||||
boostvector->push_back(IntType(1));
|
||||
stdvector->push_back(int(1));
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
}
|
||||
|
||||
{ //test back()
|
||||
const IntType test_this(1);
|
||||
if(test_this != boostvector->back()) return 1;
|
||||
}
|
||||
{ //pop_back with enough capacity
|
||||
boostvector->pop_back();
|
||||
boostvector->pop_back();
|
||||
stdvector->pop_back();
|
||||
stdvector->pop_back();
|
||||
|
||||
IntType push_back_this(1);
|
||||
boostvector->push_back(boost::move(push_back_this));
|
||||
stdvector->push_back(int(1));
|
||||
boostvector->push_back(IntType(1));
|
||||
stdvector->push_back(int(1));
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
}
|
||||
|
||||
if(!vector_copyable_only(boostvector, stdvector
|
||||
,container_detail::bool_<boost::container::test::is_copyable<IntType>::value>())){
|
||||
return 1;
|
||||
}
|
||||
|
||||
boostvector->erase(boostvector->begin());
|
||||
stdvector->erase(stdvector->begin());
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
for(int i = 0; i < max; ++i){
|
||||
IntType insert_this(i);
|
||||
boostvector->insert(boostvector->begin(), boost::move(insert_this));
|
||||
stdvector->insert(stdvector->begin(), i);
|
||||
boostvector->insert(boostvector->begin(), IntType(i));
|
||||
stdvector->insert(stdvector->begin(), int(i));
|
||||
}
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
//Test insertion from list
|
||||
{
|
||||
std::list<int> l(50, int(1));
|
||||
typename MyBoostVector::iterator it_insert =
|
||||
boostvector->insert(boostvector->begin(), l.begin(), l.end());
|
||||
if(boostvector->begin() != it_insert) return 1;
|
||||
stdvector->insert(stdvector->begin(), l.begin(), l.end());
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
boostvector->assign(l.begin(), l.end());
|
||||
stdvector->assign(l.begin(), l.end());
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
boostvector->clear();
|
||||
stdvector->clear();
|
||||
boostvector->assign(make_input_from_forward_iterator(l.begin()), make_input_from_forward_iterator(l.end()));
|
||||
stdvector->assign(l.begin(), l.end());
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
}
|
||||
/* deque has no reserve or capacity
|
||||
std::size_t cap = boostvector->capacity();
|
||||
boostvector->reserve(cap*2);
|
||||
stdvector->reserve(cap*2);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
boostvector->resize(0);
|
||||
stdvector->resize(0);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
boostvector->resize(cap*2);
|
||||
stdvector->resize(cap*2);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
boostvector->clear();
|
||||
stdvector->clear();
|
||||
boostvector->shrink_to_fit();
|
||||
MyStdVector(*stdvector).swap(*stdvector);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
boostvector->resize(cap*2);
|
||||
stdvector->resize(cap*2);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
*/
|
||||
|
||||
delete stdvector;
|
||||
delete boostvector;
|
||||
}
|
||||
BOOST_CATCH(std::exception &ex){
|
||||
#ifndef BOOST_NO_EXCEPTIONS
|
||||
std::cout << ex.what() << std::endl;
|
||||
#endif
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
typename MyBoostVector::iterator boostit(boostvector.begin());
|
||||
typename MyStdVector::iterator stdit(stdvector.begin());
|
||||
typename MyBoostVector::const_iterator cboostit = boostit;
|
||||
(void)cboostit;
|
||||
++boostit; ++stdit;
|
||||
boostvector.erase(boostit);
|
||||
stdvector.erase(stdit);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
boostvector.erase(boostvector.begin());
|
||||
stdvector.erase(stdvector.begin());
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
{
|
||||
//Initialize values
|
||||
IntType aux_vect[50];
|
||||
for(int i = 0; i < 50; ++i){
|
||||
IntType new_int(-1);
|
||||
BOOST_STATIC_ASSERT((boost::container::test::is_copyable<boost::container::test::movable_int>::value == false));
|
||||
aux_vect[i] = boost::move(new_int);
|
||||
}
|
||||
int aux_vect2[50];
|
||||
for(int i = 0; i < 50; ++i){
|
||||
aux_vect2[i] = -1;
|
||||
}
|
||||
typename MyBoostVector::iterator insert_it =
|
||||
boostvector.insert(boostvector.end()
|
||||
,boost::make_move_iterator(&aux_vect[0])
|
||||
,boost::make_move_iterator(aux_vect + 50));
|
||||
if(std::size_t(std::distance(insert_it, boostvector.end())) != 50) return 1;
|
||||
stdvector.insert(stdvector.end(), aux_vect2, aux_vect2 + 50);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
for(int i = 0, j = static_cast<int>(boostvector.size()); i < j; ++i){
|
||||
boostvector.erase(boostvector.begin());
|
||||
stdvector.erase(stdvector.begin());
|
||||
}
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
}
|
||||
{
|
||||
boostvector.resize(100);
|
||||
stdvector.resize(100);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
IntType aux_vect[50];
|
||||
for(int i = 0; i < 50; ++i){
|
||||
IntType new_int(-i);
|
||||
aux_vect[i] = boost::move(new_int);
|
||||
}
|
||||
int aux_vect2[50];
|
||||
for(int i = 0; i < 50; ++i){
|
||||
aux_vect2[i] = -i;
|
||||
}
|
||||
typename MyBoostVector::size_type old_size = boostvector.size();
|
||||
typename MyBoostVector::iterator insert_it =
|
||||
boostvector.insert(boostvector.begin() + old_size/2
|
||||
,boost::make_move_iterator(&aux_vect[0])
|
||||
,boost::make_move_iterator(aux_vect + 50));
|
||||
if(boostvector.begin() + old_size/2 != insert_it) return 1;
|
||||
stdvector.insert(stdvector.begin() + old_size/2, aux_vect2, aux_vect2 + 50);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
for(int i = 0; i < 50; ++i){
|
||||
IntType new_int(-i);
|
||||
aux_vect[i] = boost::move(new_int);
|
||||
}
|
||||
|
||||
for(int i = 0; i < 50; ++i){
|
||||
aux_vect2[i] = -i;
|
||||
}
|
||||
old_size = boostvector.size();
|
||||
//Now try with input iterators instead
|
||||
insert_it = boostvector.insert(boostvector.begin() + old_size/2
|
||||
,boost::make_move_iterator(make_input_from_forward_iterator(&aux_vect[0]))
|
||||
,boost::make_move_iterator(make_input_from_forward_iterator(aux_vect + 50))
|
||||
);
|
||||
if(boostvector.begin() + old_size/2 != insert_it) return 1;
|
||||
stdvector.insert(stdvector.begin() + old_size/2, aux_vect2, aux_vect2 + 50);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
}
|
||||
/* //deque has no reserve
|
||||
boostvector.reserve(boostvector.size()*2);
|
||||
stdvector.reserve(stdvector.size()*2);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
*/
|
||||
boostvector.shrink_to_fit();
|
||||
MyStdVector(stdvector).swap(stdvector);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
boostvector.shrink_to_fit();
|
||||
MyStdVector(stdvector).swap(stdvector);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
{ //push_back with not enough capacity
|
||||
IntType push_back_this(1);
|
||||
boostvector.push_back(boost::move(push_back_this));
|
||||
stdvector.push_back(int(1));
|
||||
boostvector.push_back(IntType(1));
|
||||
stdvector.push_back(int(1));
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
}
|
||||
|
||||
{ //test back()
|
||||
const IntType test_this(1);
|
||||
if(test_this != boostvector.back()) return 1;
|
||||
}
|
||||
{ //pop_back with enough capacity
|
||||
boostvector.pop_back();
|
||||
boostvector.pop_back();
|
||||
stdvector.pop_back();
|
||||
stdvector.pop_back();
|
||||
|
||||
IntType push_back_this(1);
|
||||
boostvector.push_back(boost::move(push_back_this));
|
||||
stdvector.push_back(int(1));
|
||||
boostvector.push_back(IntType(1));
|
||||
stdvector.push_back(int(1));
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
}
|
||||
|
||||
if(!vector_copyable_only(boostvector, stdvector
|
||||
,container_detail::bool_<boost::container::test::is_copyable<IntType>::value>())){
|
||||
return 1;
|
||||
}
|
||||
BOOST_CATCH_END
|
||||
}
|
||||
|
||||
boostvector.erase(boostvector.begin());
|
||||
stdvector.erase(stdvector.begin());
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
for(int i = 0; i < max; ++i){
|
||||
IntType insert_this(i);
|
||||
boostvector.insert(boostvector.begin(), boost::move(insert_this));
|
||||
stdvector.insert(stdvector.begin(), i);
|
||||
boostvector.insert(boostvector.begin(), IntType(i));
|
||||
stdvector.insert(stdvector.begin(), int(i));
|
||||
}
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
//Test insertion from list
|
||||
{
|
||||
std::list<int> l(50, int(1));
|
||||
typename MyBoostVector::iterator it_insert =
|
||||
boostvector.insert(boostvector.begin(), l.begin(), l.end());
|
||||
if(boostvector.begin() != it_insert) return 1;
|
||||
stdvector.insert(stdvector.begin(), l.begin(), l.end());
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
boostvector.assign(l.begin(), l.end());
|
||||
stdvector.assign(l.begin(), l.end());
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
boostvector.clear();
|
||||
stdvector.clear();
|
||||
boostvector.assign(make_input_from_forward_iterator(l.begin()), make_input_from_forward_iterator(l.end()));
|
||||
stdvector.assign(l.begin(), l.end());
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
}
|
||||
/* deque has no reserve or capacity
|
||||
std::size_t cap = boostvector.capacity();
|
||||
boostvector.reserve(cap*2);
|
||||
stdvector.reserve(cap*2);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
boostvector.resize(0);
|
||||
stdvector.resize(0);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
boostvector.resize(cap*2);
|
||||
stdvector.resize(cap*2);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
boostvector.clear();
|
||||
stdvector.clear();
|
||||
boostvector.shrink_to_fit();
|
||||
MyStdVector(stdvector).swap(stdvector);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
|
||||
boostvector.resize(cap*2);
|
||||
stdvector.resize(cap*2);
|
||||
if(!test::CheckEqualContainers(boostvector, stdvector)) return 1;
|
||||
*/
|
||||
}
|
||||
std::cout << std::endl << "Test OK!" << std::endl;
|
||||
return 0;
|
||||
}
|
||||
@@ -335,7 +329,7 @@ bool test_vector_methods_with_initializer_list_as_argument_for()
|
||||
{
|
||||
const VectorContainerType testedVector = {1, 2, 3};
|
||||
const std::vector<int> expectedVector = {1, 2, 3};
|
||||
if(!test::CheckEqualContainers(&testedVector, &expectedVector)) return false;
|
||||
if(!test::CheckEqualContainers(testedVector, expectedVector)) return false;
|
||||
}
|
||||
|
||||
{
|
||||
@@ -343,7 +337,7 @@ bool test_vector_methods_with_initializer_list_as_argument_for()
|
||||
testedVector = {11, 12, 13};
|
||||
|
||||
const std::vector<int> expectedVector = {11, 12, 13};
|
||||
if(!test::CheckEqualContainers(&testedVector, &expectedVector)) return false;
|
||||
if(!test::CheckEqualContainers(testedVector, expectedVector)) return false;
|
||||
}
|
||||
|
||||
{
|
||||
@@ -351,7 +345,7 @@ bool test_vector_methods_with_initializer_list_as_argument_for()
|
||||
testedVector.assign({5, 6, 7});
|
||||
|
||||
const std::vector<int> expectedVector = {5, 6, 7};
|
||||
if(!test::CheckEqualContainers(&testedVector, &expectedVector)) return false;
|
||||
if(!test::CheckEqualContainers(testedVector, expectedVector)) return false;
|
||||
}
|
||||
|
||||
{
|
||||
@@ -359,7 +353,7 @@ bool test_vector_methods_with_initializer_list_as_argument_for()
|
||||
testedVector.insert(testedVector.cend(), {5, 6, 7});
|
||||
|
||||
const std::vector<int> expectedVector = {1, 2, 3, 5, 6, 7};
|
||||
if(!test::CheckEqualContainers(&testedVector, &expectedVector)) return false;
|
||||
if(!test::CheckEqualContainers(testedVector, expectedVector)) return false;
|
||||
}
|
||||
return true;
|
||||
#else
|
||||
|
||||
Reference in New Issue
Block a user