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 // <list>
11 
12 // void resize(size_type sz);
13 
14 #include <list>
15 #include <cassert>
16 #include "../../../DefaultOnly.h"
17 #include "../../../min_allocator.h"
18 
19 int main()
20 {
21     {
22         std::list<int> l(5, 2);
23         l.resize(2);
24         assert(l.size() == 2);
25         assert(std::distance(l.begin(), l.end()) == 2);
26         assert(l == std::list<int>(2, 2));
27     }
28     {
29         std::list<int> l(5, 2);
30         l.resize(10);
31         assert(l.size() == 10);
32         assert(std::distance(l.begin(), l.end()) == 10);
33         assert(l.front() == 2);
34         assert(l.back() == 0);
35     }
36 #ifdef __LIBCPP_MOVE
37     {
38         std::list<DefaultOnly> l(10);
39         l.resize(5);
40         assert(l.size() == 5);
41         assert(std::distance(l.begin(), l.end()) == 5);
42     }
43     {
44         std::list<DefaultOnly> l(10);
45         l.resize(20);
46         assert(l.size() == 20);
47         assert(std::distance(l.begin(), l.end()) == 20);
48     }
49 #endif  // __LIBCPP_MOVE
50 #if __cplusplus >= 201103L
51     {
52         std::list<int, min_allocator<int>> l(5, 2);
53         l.resize(2);
54         assert(l.size() == 2);
55         assert(std::distance(l.begin(), l.end()) == 2);
56         assert((l == std::list<int, min_allocator<int>>(2, 2)));
57     }
58     {
59         std::list<int, min_allocator<int>> l(5, 2);
60         l.resize(10);
61         assert(l.size() == 10);
62         assert(std::distance(l.begin(), l.end()) == 10);
63         assert(l.front() == 2);
64         assert(l.back() == 0);
65     }
66 #ifdef __LIBCPP_MOVE
67     {
68         std::list<DefaultOnly, min_allocator<DefaultOnly>> l(10);
69         l.resize(5);
70         assert(l.size() == 5);
71         assert(std::distance(l.begin(), l.end()) == 5);
72     }
73     {
74         std::list<DefaultOnly, min_allocator<DefaultOnly>> l(10);
75         l.resize(20);
76         assert(l.size() == 20);
77         assert(std::distance(l.begin(), l.end()) == 20);
78     }
79 #endif  // __LIBCPP_MOVE
80 #endif
81 }
82