insert_test.hpp 2.0 KB

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