Added more tests for backwards expansion

This commit is contained in:
Ion Gaztañaga
2014-09-20 17:29:41 +02:00
parent 27f99047a8
commit 1e40192e96

View File

@@ -168,64 +168,66 @@ bool test_insert_with_expand_bwd()
//Distance old and new buffer //Distance old and new buffer
const int Offset[] = const int Offset[] =
{ 350, 250, 150, 150, { 350, 300, 250, 200, 150, 100, 150, 100,
150, 50, 50, 50 }; 150, 50, 50, 50 };
//Insert position
const int Position[] =
{ 100, 100, 100, 100,
100, 100, 100, 100 };
//Initial vector size //Initial vector size
const int InitialSize[] = const int InitialSize[] =
{ 200, 200, 200, 200, { 200, 200, 200, 200, 200, 200, 200, 200,
200, 200, 200, 200 }; 200, 200, 200, 200 };
//Size of the data to insert //Size of the data to insert
const int InsertSize[] = const int InsertSize[] =
{ 100, 100, 100, 200, { 100, 100, 100, 100, 100, 100, 200, 200,
300, 25, 100, 200 }; 300, 25, 100, 200 };
//Number of tests //Number of tests
const int Iterations = sizeof(InsertSize)/sizeof(int); const int Iterations = sizeof(InsertSize)/sizeof(int);
for(int iteration = 0; iteration < Iterations; ++iteration) //Insert position
{ const int Position[] =
boost::movelib::unique_ptr<char[]> memptr = { 0, 100, 200 };
boost::movelib::make_unique_definit<char[]>(MemorySize*sizeof(value_type));
value_type *memory = (value_type*)memptr.get();
std::vector<non_volatile_value_type> initial_data;
initial_data.resize(InitialSize[iteration]);
for(int i = 0; i < InitialSize[iteration]; ++i){
initial_data[i] = i;
}
if(!life_count<value_type>::check(InitialSize[iteration])) for(int pos = 0; pos < sizeof(Position)/sizeof(Position[0]); ++pos){
return false; for(int iteration = 0; iteration < Iterations; ++iteration)
Vect data_to_insert; {
data_to_insert.resize(InsertSize[iteration]); boost::movelib::unique_ptr<char[]> memptr =
for(int i = 0; i < InsertSize[iteration]; ++i){ boost::movelib::make_unique_definit<char[]>(MemorySize*sizeof(value_type));
data_to_insert[i] = -i; value_type *memory = (value_type*)memptr.get();
} std::vector<non_volatile_value_type> initial_data;
initial_data.resize(InitialSize[iteration]);
for(int i = 0; i < InitialSize[iteration]; ++i){
initial_data[i] = i;
}
if(!life_count<value_type>::check(InitialSize[iteration]+InsertSize[iteration])) if(!life_count<value_type>::check(InitialSize[iteration]))
return false; return false;
Vect data_to_insert;
data_to_insert.resize(InsertSize[iteration]);
for(int i = 0; i < InsertSize[iteration]; ++i){
data_to_insert[i] = -i;
}
expand_bwd_test_allocator<value_type> alloc if(!life_count<value_type>::check(InitialSize[iteration]+InsertSize[iteration]))
(&memory[0], MemorySize, Offset[iteration]); return false;
VectorWithExpandBwdAllocator vector(alloc);
vector.insert( vector.begin()
, initial_data.begin(), initial_data.end());
vector.insert( vector.begin() + Position[iteration]
, data_to_insert.begin(), data_to_insert.end());
if(!life_count<value_type>::check(InitialSize[iteration]*2+InsertSize[iteration]*2)) expand_bwd_test_allocator<value_type> alloc
return false; (&memory[0], MemorySize, Offset[iteration]);
VectorWithExpandBwdAllocator vector(alloc);
vector.insert( vector.begin()
, initial_data.begin(), initial_data.end());
vector.insert( vector.begin() + Position[pos]
, data_to_insert.begin(), data_to_insert.end());
initial_data.insert(initial_data.begin() + Position[iteration] if(!life_count<value_type>::check(InitialSize[iteration]*2+InsertSize[iteration]*2))
, data_to_insert.begin(), data_to_insert.end()); return false;
//Now check that values are equal
if(!CheckEqualVector(vector, initial_data)){ initial_data.insert(initial_data.begin() + Position[pos]
std::cout << "test_assign_with_expand_bwd::CheckEqualVector failed." << std::endl , data_to_insert.begin(), data_to_insert.end());
<< " Class: " << typeid(VectorWithExpandBwdAllocator).name() << std::endl //Now check that values are equal
<< " Iteration: " << iteration << std::endl; if(!CheckEqualVector(vector, initial_data)){
return false; std::cout << "test_assign_with_expand_bwd::CheckEqualVector failed." << std::endl
<< " Class: " << typeid(VectorWithExpandBwdAllocator).name() << std::endl
<< " Iteration: " << iteration << std::endl;
return false;
}
} }
} }