1 | #ifndef BOOST_CONTAINER_TEST_INSERT_TEST_HPP |
2 | #define BOOST_CONTAINER_TEST_INSERT_TEST_HPP |
3 | |
4 | // Copyright (C) 2013 Cromwell D. Enage |
5 | // Distributed under the Boost Software License, Version 1.0. |
6 | // (See accompanying file LICENSE_1_0.txt or copy at |
7 | // http://www.boost.org/LICENSE_1_0.txt) |
8 | |
9 | #include <deque> |
10 | #include <boost/core/lightweight_test.hpp> |
11 | #include "check_equal_containers.hpp" |
12 | |
13 | namespace boost { |
14 | namespace container { |
15 | namespace test { |
16 | |
17 | template<class SeqContainer> |
18 | void |
19 | test_insert_range( |
20 | std::deque<int> &std_deque |
21 | , SeqContainer &seq_container |
22 | , std::deque<int> const& input_deque |
23 | , std::size_t index |
24 | ) |
25 | { |
26 | BOOST_TEST(CheckEqualContainers(std_deque, seq_container)); |
27 | |
28 | std_deque.insert( |
29 | position: std_deque.begin() + std::ptrdiff_t(index) |
30 | , first: input_deque.begin() |
31 | , last: input_deque.end() |
32 | ); |
33 | |
34 | seq_container.insert( |
35 | seq_container.begin() + std::ptrdiff_t(index) |
36 | , input_deque.begin() |
37 | , input_deque.end() |
38 | ); |
39 | BOOST_TEST(CheckEqualContainers(std_deque, seq_container)); |
40 | } |
41 | |
42 | template<class SeqContainer> |
43 | bool test_range_insertion() |
44 | { |
45 | int err_count = boost::report_errors(); |
46 | typedef typename SeqContainer::value_type value_type; |
47 | std::deque<int> input_deque; |
48 | for (int element = -10; element < 10; ++element) |
49 | { |
50 | input_deque.push_back(x: element + 20); |
51 | } |
52 | |
53 | for (std::size_t i = 0; i <= input_deque.size(); ++i) |
54 | { |
55 | std::deque<int> std_deque; |
56 | ::boost::movelib::unique_ptr<SeqContainer> const pseqcontainer = ::boost::movelib::make_unique<SeqContainer>(); |
57 | SeqContainer &seq_container = *pseqcontainer; |
58 | |
59 | for (int element = -10; element < 10; ++element) |
60 | { |
61 | std_deque.push_back(x: element); |
62 | seq_container.push_back(value_type(element)); |
63 | } |
64 | test_insert_range(std_deque, seq_container, input_deque, i); |
65 | } |
66 | |
67 | return err_count == boost::report_errors(); |
68 | } |
69 | |
70 | |
71 | } //namespace test { |
72 | } //namespace container { |
73 | } //namespace boost { |
74 | |
75 | #endif //#ifndef BOOST_CONTAINER_TEST_INSERT_TEST_HPP |
76 | |