diff options
| author | Marshall Clow <mclow.lists@gmail.com> | 2015-01-22 18:33:29 +0000 | 
|---|---|---|
| committer | Marshall Clow <mclow.lists@gmail.com> | 2015-01-22 18:33:29 +0000 | 
| commit | f15d7a588228842f558b14c0f23ba76d9b5e8d80 (patch) | |
| tree | 90708ca9855848dd20b9fa34b429e66de8521072 /libcxx/test/std/containers | |
| parent | cd6bbba18612654fdc8aa2508202333694b207ab (diff) | |
| download | bcm5719-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/std/containers')
| -rw-r--r-- | libcxx/test/std/containers/sequences/deque/deque.modifiers/insert_iter_iter.pass.cpp | 41 | 
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> | 

