summaryrefslogtreecommitdiffstats
path: root/libcxx/test
diff options
context:
space:
mode:
authorMarshall Clow <mclow.lists@gmail.com>2015-01-22 18:33:29 +0000
committerMarshall Clow <mclow.lists@gmail.com>2015-01-22 18:33:29 +0000
commitf15d7a588228842f558b14c0f23ba76d9b5e8d80 (patch)
tree90708ca9855848dd20b9fa34b429e66de8521072 /libcxx/test
parentcd6bbba18612654fdc8aa2508202333694b207ab (diff)
downloadbcm5719-llvm-f15d7a588228842f558b14c0f23ba76d9b5e8d80.tar.gz
bcm5719-llvm-f15d7a588228842f558b14c0f23ba76d9b5e8d80.zip
Fix PR#22284. Add a new overload to deque::insert to handle forward iterators. Update tests to exercise this case.
llvm-svn: 226847
Diffstat (limited to 'libcxx/test')
-rw-r--r--libcxx/test/std/containers/sequences/deque/deque.modifiers/insert_iter_iter.pass.cpp41
1 files changed, 40 insertions, 1 deletions
diff --git a/libcxx/test/std/containers/sequences/deque/deque.modifiers/insert_iter_iter.pass.cpp b/libcxx/test/std/containers/sequences/deque/deque.modifiers/insert_iter_iter.pass.cpp
index 2bc37c34ce4..909390f85ca 100644
--- a/libcxx/test/std/containers/sequences/deque/deque.modifiers/insert_iter_iter.pass.cpp
+++ b/libcxx/test/std/containers/sequences/deque/deque.modifiers/insert_iter_iter.pass.cpp
@@ -46,11 +46,49 @@ make(int size, int start = 0 )
template <class C>
void
-test(int P, C& c1, const C& c2)
+test(int P, const C& c0, const C& c2)
{
+ {
+ typedef typename C::iterator I;
+ typedef typename C::const_iterator CI;
+ typedef input_iterator<CI> BCI;
+ C c1 = c0;
+ std::size_t c1_osize = c1.size();
+ CI i = c1.insert(c1.begin() + P, BCI(c2.begin()), BCI(c2.end()));
+ assert(i == c1.begin() + P);
+ assert(c1.size() == c1_osize + c2.size());
+ assert(distance(c1.begin(), c1.end()) == c1.size());
+ i = c1.begin();
+ for (int j = 0; j < P; ++j, ++i)
+ assert(*i == j);
+ for (int j = 0; j < c2.size(); ++j, ++i)
+ assert(*i == j);
+ for (int j = P; j < c1_osize; ++j, ++i)
+ assert(*i == j);
+ }
+ {
+ typedef typename C::iterator I;
+ typedef typename C::const_iterator CI;
+ typedef forward_iterator<CI> BCI;
+ C c1 = c0;
+ std::size_t c1_osize = c1.size();
+ CI i = c1.insert(c1.begin() + P, BCI(c2.begin()), BCI(c2.end()));
+ assert(i == c1.begin() + P);
+ assert(c1.size() == c1_osize + c2.size());
+ assert(distance(c1.begin(), c1.end()) == c1.size());
+ i = c1.begin();
+ for (int j = 0; j < P; ++j, ++i)
+ assert(*i == j);
+ for (int j = 0; j < c2.size(); ++j, ++i)
+ assert(*i == j);
+ for (int j = P; j < c1_osize; ++j, ++i)
+ assert(*i == j);
+ }
+ {
typedef typename C::iterator I;
typedef typename C::const_iterator CI;
typedef bidirectional_iterator<CI> BCI;
+ C c1 = c0;
std::size_t c1_osize = c1.size();
CI i = c1.insert(c1.begin() + P, BCI(c2.begin()), BCI(c2.end()));
assert(i == c1.begin() + P);
@@ -63,6 +101,7 @@ test(int P, C& c1, const C& c2)
assert(*i == j);
for (int j = P; j < c1_osize; ++j, ++i)
assert(*i == j);
+ }
}
template <class C>
OpenPOWER on IntegriCloud