]> git.ipfire.org Git - thirdparty/gcc.git/blob - libstdc++-v3/testsuite/23_containers/vector/ext_pointer/resize.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 23_containers / vector / ext_pointer / resize.cc
1
2 // Copyright (C) 2008-2021 Free Software Foundation, Inc.
3 //
4 // This file is part of the GNU ISO C++ Library. This library is free
5 // software; you can redistribute it and/or modify it under the
6 // terms of the GNU General Public License as published by the
7 // Free Software Foundation; either version 3, or (at your option)
8 // any later version.
9
10 // This library is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
14
15 // You should have received a copy of the GNU General Public License along
16 // with this library; see the file COPYING3. If not see
17 // <http://www.gnu.org/licenses/>.
18
19
20 #include <vector>
21 #include <stdexcept>
22 #include <testsuite_allocator.h>
23 #include <testsuite_hooks.h>
24 #include <ext/extptr_allocator.h>
25
26
27 void test01()
28 {
29 // non POD types
30 std::vector<int, __gnu_cxx::_ExtPtr_allocator<int> > vec01;
31 typedef std::vector<int, __gnu_cxx::_ExtPtr_allocator<int> >::size_type size_type;
32
33 VERIFY(vec01.empty());
34
35 const int A[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
36
37 // Test resize of the vector based on reserve
38 size_type sz01 = vec01.capacity();
39 vec01.reserve(100);
40 size_type sz02 = vec01.capacity();
41 VERIFY(sz02 >= sz01);
42
43 // grow/shrink
44 vec01.assign( A, A+10 );
45 sz01 = vec01.size() + 100;
46 vec01.resize(sz01);
47 sz02 = vec01.size();
48 VERIFY(sz01 == sz02);
49 VERIFY(std::equal(vec01.begin(), vec01.begin()+10, A));
50
51 sz01 = vec01.size() - 100;
52 vec01.resize(sz01);
53 sz02 = vec01.size();
54 VERIFY(sz01 == sz02);
55 VERIFY(std::equal(vec01.begin(), vec01.end(), A));
56 }
57
58 int main()
59 {
60 test01();
61 return 0;
62 }