]> git.ipfire.org Git - thirdparty/gcc.git/blob - libstdc++-v3/testsuite/23_containers/vector/ext_pointer/resize.cc
re PR c++/59378 (Internal compiler error when using __builtin_shuffle in a template...
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 23_containers / vector / ext_pointer / resize.cc
1
2 // Copyright (C) 2008-2013 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 bool test __attribute__((unused)) = true;
31
32 std::vector<int, __gnu_cxx::_ExtPtr_allocator<int> > vec01;
33 typedef std::vector<int, __gnu_cxx::_ExtPtr_allocator<int> >::size_type size_type;
34
35 VERIFY(vec01.empty());
36
37 const int A[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
38
39 // Test resize of the vector based on reserve
40 size_type sz01 = vec01.capacity();
41 vec01.reserve(100);
42 size_type sz02 = vec01.capacity();
43 VERIFY(sz02 >= sz01);
44
45 // grow/shrink
46 vec01.assign( A, A+10 );
47 sz01 = vec01.size() + 100;
48 vec01.resize(sz01);
49 sz02 = vec01.size();
50 VERIFY(sz01 == sz02);
51 VERIFY(std::equal(vec01.begin(), vec01.begin()+10, A));
52
53 sz01 = vec01.size() - 100;
54 vec01.resize(sz01);
55 sz02 = vec01.size();
56 VERIFY(sz01 == sz02);
57 VERIFY(std::equal(vec01.begin(), vec01.end(), A));
58 }
59
60 int main()
61 {
62 test01();
63 return 0;
64 }