1 //===----------------------------------------------------------------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
13 // template <class Iter>
14 // iterator insert(const_iterator position, Iter first, Iter last);
20 #include "test_macros.h"
21 #include "test_iterators.h"
22 #include "min_allocator.h"
27 std::vector<bool> v(100);
28 bool a[] = {1, 0, 0, 1, 1};
29 const unsigned N = sizeof(a)/sizeof(a[0]);
30 std::vector<bool>::iterator i = v.insert(v.cbegin() + 10, input_iterator<const bool*>(a),
31 input_iterator<const bool*>(a+N));
32 assert(v.size() == 100 + N);
33 assert(i == v.begin() + 10);
35 for (j = 0; j < 10; ++j)
37 for (std::size_t k = 0; k < N; ++j, ++k)
39 for (; j < v.size(); ++j)
43 std::vector<bool> v(100);
44 bool a[] = {1, 0, 0, 1, 1};
45 const unsigned N = sizeof(a)/sizeof(a[0]);
46 std::vector<bool>::iterator i = v.insert(v.cbegin() + 10, forward_iterator<const bool*>(a),
47 forward_iterator<const bool*>(a+N));
48 assert(v.size() == 100 + N);
49 assert(i == v.begin() + 10);
51 for (j = 0; j < 10; ++j)
53 for (std::size_t k = 0; k < N; ++j, ++k)
59 std::vector<bool> v(100);
60 while(v.size() < v.capacity()) v.push_back(false);
62 bool a[] = {1, 0, 0, 1, 1};
63 const unsigned N = sizeof(a)/sizeof(a[0]);
64 std::vector<bool>::iterator i = v.insert(v.cbegin() + 10, forward_iterator<const bool*>(a),
65 forward_iterator<const bool*>(a+N));
66 assert(v.size() == sz + N);
67 assert(i == v.begin() + 10);
69 for (j = 0; j < 10; ++j)
71 for (std::size_t k = 0; k < N; ++j, ++k)
73 for (; j < v.size(); ++j)
77 std::vector<bool> v(100);
78 while(v.size() < v.capacity()) v.push_back(false);
79 v.pop_back(); v.pop_back(); v.pop_back();
81 bool a[] = {1, 0, 0, 1, 1};
82 const unsigned N = sizeof(a)/sizeof(a[0]);
83 std::vector<bool>::iterator i = v.insert(v.cbegin() + 10, forward_iterator<const bool*>(a),
84 forward_iterator<const bool*>(a+N));
85 assert(v.size() == sz + N);
86 assert(i == v.begin() + 10);
88 for (j = 0; j < 10; ++j)
90 for (std::size_t k = 0; k < N; ++j, ++k)
92 for (; j < v.size(); ++j)
95 #if TEST_STD_VER >= 11
97 std::vector<bool, min_allocator<bool>> v(100);
98 bool a[] = {1, 0, 0, 1, 1};
99 const unsigned N = sizeof(a)/sizeof(a[0]);
100 std::vector<bool, min_allocator<bool>>::iterator i = v.insert(v.cbegin() + 10, input_iterator<const bool*>(a),
101 input_iterator<const bool*>(a+N));
102 assert(v.size() == 100 + N);
103 assert(i == v.begin() + 10);
105 for (j = 0; j < 10; ++j)
107 for (std::size_t k = 0; k < N; ++j, ++k)
108 assert(v[j] == a[k]);
109 for (; j < v.size(); ++j)
113 std::vector<bool, min_allocator<bool>> v(100);
114 bool a[] = {1, 0, 0, 1, 1};
115 const unsigned N = sizeof(a)/sizeof(a[0]);
116 std::vector<bool, min_allocator<bool>>::iterator i = v.insert(v.cbegin() + 10, forward_iterator<const bool*>(a),
117 forward_iterator<const bool*>(a+N));
118 assert(v.size() == 100 + N);
119 assert(i == v.begin() + 10);
121 for (j = 0; j < 10; ++j)
123 for (std::size_t k = 0; k < N; ++j, ++k)
124 assert(v[j] == a[k]);
125 for (; j < v.size(); ++j)