diff --git a/test/containers/sequences/vector.bool/insert_iter_size_value.pass.cpp b/test/containers/sequences/vector.bool/insert_iter_size_value.pass.cpp index f819a31f..710ad488 100644 --- a/test/containers/sequences/vector.bool/insert_iter_size_value.pass.cpp +++ b/test/containers/sequences/vector.bool/insert_iter_size_value.pass.cpp @@ -47,6 +47,22 @@ int main() for (++j; j < v.size(); ++j) assert(v[j] == 0); } + { + std::vector v(100); + while(v.size() < v.capacity()) v.push_back(false); + v.pop_back(); v.pop_back(); + size_t sz = v.size(); + std::vector::iterator i = v.insert(v.cbegin() + 10, 5, 1); + assert(v.size() == sz + 5); + assert(i == v.begin() + 10); + int j; + for (j = 0; j < 10; ++j) + assert(v[j] == 0); + for (; j < 15; ++j) + assert(v[j] == 1); + for (++j; j < v.size(); ++j) + assert(v[j] == 0); + } #if __cplusplus >= 201103L { std::vector> v(100); diff --git a/test/containers/sequences/vector.bool/insert_iter_value.pass.cpp b/test/containers/sequences/vector.bool/insert_iter_value.pass.cpp index 78a89e72..51c4626d 100644 --- a/test/containers/sequences/vector.bool/insert_iter_value.pass.cpp +++ b/test/containers/sequences/vector.bool/insert_iter_value.pass.cpp @@ -45,6 +45,21 @@ int main() for (++j; j < v.size(); ++j) assert(v[j] == 0); } + { + std::vector v(100); + while(v.size() < v.capacity()) v.push_back(false); + v.pop_back(); v.pop_back(); + size_t sz = v.size(); + std::vector::iterator i = v.insert(v.cbegin() + 10, 1); + assert(v.size() == sz + 1); + assert(i == v.begin() + 10); + int j; + for (j = 0; j < 10; ++j) + assert(v[j] == 0); + assert(v[j] == 1); + for (++j; j < v.size(); ++j) + assert(v[j] == 0); + } #if __cplusplus >= 201103L { std::vector> v(100); diff --git a/test/containers/sequences/vector/vector.modifiers/insert_iter_iter_iter.pass.cpp b/test/containers/sequences/vector/vector.modifiers/insert_iter_iter_iter.pass.cpp index cf24a871..782437be 100644 --- a/test/containers/sequences/vector/vector.modifiers/insert_iter_iter_iter.pass.cpp +++ b/test/containers/sequences/vector/vector.modifiers/insert_iter_iter_iter.pass.cpp @@ -59,6 +59,42 @@ int main() for (; j < 105; ++j) assert(v[j] == 0); } + { + std::vector v(100); + while(v.size() < v.capacity()) v.push_back(0); // force reallocation + size_t sz = v.size(); + int a[] = {1, 2, 3, 4, 5}; + const unsigned N = sizeof(a)/sizeof(a[0]); + std::vector::iterator i = v.insert(v.cbegin() + 10, forward_iterator(a), + forward_iterator(a+N)); + assert(v.size() == sz + N); + assert(i == v.begin() + 10); + int j; + for (j = 0; j < 10; ++j) + assert(v[j] == 0); + for (int k = 0; k < N; ++j, ++k) + assert(v[j] == a[k]); + for (; j < v.size(); ++j) + assert(v[j] == 0); + } + { + std::vector v(100); + v.reserve(128); // force no reallocation + size_t sz = v.size(); + int a[] = {1, 2, 3, 4, 5}; + const unsigned N = sizeof(a)/sizeof(a[0]); + std::vector::iterator i = v.insert(v.cbegin() + 10, forward_iterator(a), + forward_iterator(a+N)); + assert(v.size() == sz + N); + assert(i == v.begin() + 10); + int j; + for (j = 0; j < 10; ++j) + assert(v[j] == 0); + for (int k = 0; k < N; ++j, ++k) + assert(v[j] == a[k]); + for (; j < v.size(); ++j) + assert(v[j] == 0); + } { std::vector > v(100); int a[] = {1, 2, 3, 4, 5}; diff --git a/test/containers/sequences/vector/vector.modifiers/insert_iter_size_value.pass.cpp b/test/containers/sequences/vector/vector.modifiers/insert_iter_size_value.pass.cpp index 42effc72..6997284f 100644 --- a/test/containers/sequences/vector/vector.modifiers/insert_iter_size_value.pass.cpp +++ b/test/containers/sequences/vector/vector.modifiers/insert_iter_size_value.pass.cpp @@ -37,6 +37,38 @@ int main() for (++j; j < 105; ++j) assert(v[j] == 0); } + { + std::vector v(100); + while(v.size() < v.capacity()) v.push_back(0); // force reallocation + size_t sz = v.size(); + std::vector::iterator i = v.insert(v.cbegin() + 10, 5, 1); + assert(v.size() == sz + 5); + assert(is_contiguous_container_asan_correct(v)); + assert(i == v.begin() + 10); + int j; + for (j = 0; j < 10; ++j) + assert(v[j] == 0); + for (; j < 15; ++j) + assert(v[j] == 1); + for (++j; j < v.size(); ++j) + assert(v[j] == 0); + } + { + std::vector v(100); + v.reserve(128); // force no reallocation + size_t sz = v.size(); + std::vector::iterator i = v.insert(v.cbegin() + 10, 5, 1); + assert(v.size() == sz + 5); + assert(is_contiguous_container_asan_correct(v)); + assert(i == v.begin() + 10); + int j; + for (j = 0; j < 10; ++j) + assert(v[j] == 0); + for (; j < 15; ++j) + assert(v[j] == 1); + for (++j; j < v.size(); ++j) + assert(v[j] == 0); + } { std::vector > v(100); std::vector >::iterator i = v.insert(v.cbegin() + 10, 5, 1); diff --git a/test/containers/sequences/vector/vector.modifiers/insert_iter_value.pass.cpp b/test/containers/sequences/vector/vector.modifiers/insert_iter_value.pass.cpp index feb74c05..782e7521 100644 --- a/test/containers/sequences/vector/vector.modifiers/insert_iter_value.pass.cpp +++ b/test/containers/sequences/vector/vector.modifiers/insert_iter_value.pass.cpp @@ -36,6 +36,37 @@ int main() for (++j; j < 101; ++j) assert(v[j] == 0); } + { + std::vector v(100); + while(v.size() < v.capacity()) v.push_back(0); // force reallocation + size_t sz = v.size(); + std::vector::iterator i = v.insert(v.cbegin() + 10, 1); + assert(v.size() == sz + 1); + assert(is_contiguous_container_asan_correct(v)); + assert(i == v.begin() + 10); + int j; + for (j = 0; j < 10; ++j) + assert(v[j] == 0); + assert(v[j] == 1); + for (++j; j < v.size(); ++j) + assert(v[j] == 0); + } + { + std::vector v(100); + while(v.size() < v.capacity()) v.push_back(0); + v.pop_back(); v.pop_back(); // force no reallocation + size_t sz = v.size(); + std::vector::iterator i = v.insert(v.cbegin() + 10, 1); + assert(v.size() == sz + 1); + assert(is_contiguous_container_asan_correct(v)); + assert(i == v.begin() + 10); + int j; + for (j = 0; j < 10; ++j) + assert(v[j] == 0); + assert(v[j] == 1); + for (++j; j < v.size(); ++j) + assert(v[j] == 0); + } { std::vector > v(100); std::vector >::iterator i = v.insert(v.cbegin() + 10, 1);