1// Copyright (C) 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
2//
3// This file is part of the GNU ISO C++ Library.  This library is free
4// software; you can redistribute it and/or modify it under the
5// terms of the GNU General Public License as published by the
6// Free Software Foundation; either version 3, or (at your option)
7// any later version.
8
9// This library is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12// GNU General Public License for more details.
13
14// You should have received a copy of the GNU General Public License along
15// with this library; see the file COPYING3.  If not see
16// <http://www.gnu.org/licenses/>.
17
18
19#include <ext/vstring.h>
20#include <ext/array_allocator.h>
21#include <testsuite_hooks.h>
22
23typedef char char_type;
24typedef std::char_traits<char_type> traits_type;
25typedef std::tr1::array<char_type, 4> array_type;
26
27array_type extern_array;
28
29void test01()
30{
31  bool test __attribute__((unused)) = true;
32
33  using __gnu_cxx::__versa_string;
34  typedef __gnu_cxx::array_allocator<char_type, array_type> allocator_type;
35  typedef __versa_string<char_type, traits_type, allocator_type> string_type;
36
37  allocator_type a(&extern_array);
38  string_type s(a);
39
40  try
41    {
42      s.reserve(4); // Actually need 4 + 1 + sizeof(std::string::_Rep).
43    }
44  catch(std::bad_alloc& obj)
45    {
46      VERIFY( true );
47    }
48  catch(...)
49    {
50      VERIFY( false );
51    }
52}
53
54int main()
55{
56  test01();
57  return 0;
58}
59