Ticket #8294: deque_insert_range.cpp

File deque_insert_range.cpp, 1.7 KB (added by expaler, 10 years ago)

This test program compares the behavior of boost::container::deque with that of std::deque. Currently it reports errors at lines 40 and 41, after range insertion into the boost::container::deque. Note that using single-element insertion into the boost::container::deque to accomplish the desired result works as intended.

Line 
1// Copyright (C) 2013 Cromwell D. Enage
2// Distributed under the Boost Software License, Version 1.0.
3// (See accompanying file LICENSE_1_0.txt or copy at
4// http://www.boost.org/LICENSE_1_0.txt)
5
6#include <deque>
7#include <boost/container/deque.hpp>
8#include <boost/range/algorithm/equal.hpp>
9#include <boost/test/minimal.hpp>
10
11void
12 test_insert_range(
13 std::deque<int> std_deque
14 , boost::container::deque<int> boost_deque
15 , std::deque<int> const& input_deque
16 , std::size_t index
17 )
18{
19 BOOST_CHECK(boost::range::equal(std_deque, boost_deque));
20
21 boost::container::deque<int> other_deque(boost_deque);
22
23 std_deque.insert(
24 std_deque.begin() + index
25 , input_deque.begin()
26 , input_deque.end()
27 );
28
29 for (std::size_t i = 0; i < input_deque.size(); ++i)
30 {
31 other_deque.insert(other_deque.begin() + index + i, input_deque[i]);
32 }
33
34 BOOST_CHECK(boost::range::equal(std_deque, other_deque));
35 boost_deque.insert(
36 boost_deque.begin() + index
37 , input_deque.begin()
38 , input_deque.end()
39 );
40 BOOST_CHECK(boost::range::equal(std_deque, boost_deque));
41 BOOST_CHECK(boost::range::equal(boost_deque, other_deque));
42}
43
44int test_main(int argc, char** argv)
45{
46 std::deque<int> std_deque, input_deque;
47 boost::container::deque<int> boost_deque;
48
49 for (int element = -10; element < 10; ++element)
50 {
51 std_deque.push_back(element);
52 boost_deque.push_back(element);
53 input_deque.push_back(element + 20);
54 }
55
56 BOOST_CHECK(boost::range::equal(std_deque, boost_deque));
57
58 for (std::size_t i = 0; i <= input_deque.size(); ++i)
59 {
60 test_insert_range(std_deque, boost_deque, input_deque, i);
61 }
62
63 return 0;
64}
65