]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/std/containers/sequences/vector.bool/insert_iter_size_value.pass.cpp
Vendor import of libc++ trunk r290819:
[FreeBSD/FreeBSD.git] / test / std / containers / sequences / vector.bool / insert_iter_size_value.pass.cpp
1 //===----------------------------------------------------------------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 // <vector>
11 // vector<bool>
12
13 // iterator insert(const_iterator position, size_type n, const value_type& x);
14
15 #include <vector>
16 #include <cassert>
17 #include <cstddef>
18
19 #include "min_allocator.h"
20
21 int main()
22 {
23     {
24         std::vector<bool> v(100);
25         std::vector<bool>::iterator i = v.insert(v.cbegin() + 10, 5, 1);
26         assert(v.size() == 105);
27         assert(i == v.begin() + 10);
28         std::size_t j;
29         for (j = 0; j < 10; ++j)
30             assert(v[j] == 0);
31         for (; j < 15; ++j)
32             assert(v[j] == 1);
33         for (++j; j < v.size(); ++j)
34             assert(v[j] == 0);
35     }
36     {
37         std::vector<bool> v(100);
38         while(v.size() < v.capacity()) v.push_back(false);
39         size_t sz = v.size();
40         std::vector<bool>::iterator i = v.insert(v.cbegin() + 10, 5, 1);
41         assert(v.size() == sz + 5);
42         assert(i == v.begin() + 10);
43         std::size_t j;
44         for (j = 0; j < 10; ++j)
45             assert(v[j] == 0);
46         for (; j < 15; ++j)
47             assert(v[j] == 1);
48         for (++j; j < v.size(); ++j)
49             assert(v[j] == 0);
50     }
51     {
52         std::vector<bool> v(100);
53         while(v.size() < v.capacity()) v.push_back(false);
54         v.pop_back(); v.pop_back();
55         size_t sz = v.size();
56         std::vector<bool>::iterator i = v.insert(v.cbegin() + 10, 5, 1);
57         assert(v.size() == sz + 5);
58         assert(i == v.begin() + 10);
59         std::size_t j;
60         for (j = 0; j < 10; ++j)
61             assert(v[j] == 0);
62         for (; j < 15; ++j)
63             assert(v[j] == 1);
64         for (++j; j < v.size(); ++j)
65             assert(v[j] == 0);
66     }
67 #if TEST_STD_VER >= 11
68     {
69         std::vector<bool, min_allocator<bool>> v(100);
70         std::vector<bool, min_allocator<bool>>::iterator i = v.insert(v.cbegin() + 10, 5, 1);
71         assert(v.size() == 105);
72         assert(i == v.begin() + 10);
73         std::size_t j;
74         for (j = 0; j < 10; ++j)
75             assert(v[j] == 0);
76         for (; j < 15; ++j)
77             assert(v[j] == 1);
78         for (++j; j < v.size(); ++j)
79             assert(v[j] == 0);
80     }
81 #endif
82 }