1// Test for Container using non-standard pointer types.
2
3// Copyright (C) 2008, 2009 Free Software Foundation, Inc.
4//
5// This file is part of the GNU ISO C++ Library.  This library is free
6// software; you can redistribute it and/or modify it under the
7// terms of the GNU General Public License as published by the
8// Free Software Foundation; either version 3, or (at your option)
9// any later version.
10
11// This library is distributed in the hope that it will be useful,
12// but WITHOUT ANY WARRANTY; without even the implied warranty of
13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14// GNU General Public License for more details.
15
16// You should have received a copy of the GNU General Public License along
17// with this library; see the file COPYING3.  If not see
18// <http://www.gnu.org/licenses/>.
19
20
21#include <vector>
22#include <stdexcept>
23#include <testsuite_hooks.h>
24#include <ext/extptr_allocator.h>
25
26// General tests element access and manipulation
27void test01()
28{
29  bool test __attribute__((unused)) = true;
30
31  int A[] = { 0, 1, 2, 3, 4 };
32  __gnu_cxx::_ExtPtr_allocator<int> alloc;
33  std::vector<int,__gnu_cxx::_ExtPtr_allocator<int> > mv( A, A+5, alloc );
34
35  VERIFY( mv.size() == 5 );
36  VERIFY( mv.front() == 0 );
37  VERIFY( mv.back() == 4 );
38  VERIFY( mv.at(2) == 2 );
39  VERIFY( mv[3] == 3);
40  mv.front() = 5;
41  mv.back() = 6;
42  mv.at(2) = 7;
43  mv[3] = 8;
44  VERIFY( mv.size() == 5 );
45  VERIFY( mv.front() == 5 );
46  VERIFY( mv.back() == 6 );
47  VERIFY( mv.at(2) == 7 );
48  VERIFY( mv[3] == 8 );
49
50  try
51    {
52  	mv.at(100) = 8;
53    }
54  catch(std::out_of_range&)
55    {
56      VERIFY( true );
57    }
58  catch(...)
59    {
60      VERIFY( false );
61    }
62
63  const std::vector<int,__gnu_cxx::_ExtPtr_allocator<int> > cmv( mv );
64  VERIFY( cmv.get_allocator() == mv.get_allocator() );
65  VERIFY( mv.size() == 5 );
66  VERIFY( mv.front() == 5 );
67  VERIFY( mv.back() == 6 );
68  VERIFY( mv.at(2) == 7 );
69  VERIFY( mv[3] == 8 );
70}
71
72
73int main()
74{
75  test01();
76  return 0;
77}
78