1// 2004-11-29 Paolo Carlini <pcarlini@suse.de> 2 3// Copyright (C) 2004, 2009 Free Software Foundation 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.3.3 string capacity 21 22#include <string> 23#include <testsuite_hooks.h> 24 25// libstdc++/18654 26void test01() 27{ 28 using namespace std; 29 bool test __attribute__((unused)) = true; 30 31 typedef wstring::size_type size_type; 32 33 // Our current implementation provides exact shrink-to-size 34 // and shrink-to-fit (in the future, maybe this will change 35 // for short strings). 36 const size_type minsize = 2 << 0; 37 const size_type maxsize = 2 << 20; 38 for (size_type i = minsize; i <= maxsize; i *= 2) 39 { 40 wstring str(i, L'x'); 41 str.reserve(3 * i); 42 43 str.reserve(2 * i); 44 VERIFY( str.capacity() == 2 * i ); 45 46 str.reserve(); 47 VERIFY( str.capacity() == i ); 48 } 49} 50 51int main() 52{ 53 test01(); 54 return 0; 55} 56