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
19int 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 TEST_STD_VER >= 11
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