1// 2001-04-30 Benjamin Kosnik <bkoz@redhat.com> 2 3// Copyright (C) 2001-2015 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// 24.5.4 template class ostreambuf_iterator 21 22#include <sstream> 23#include <iterator> 24#include <testsuite_hooks.h> 25 26bool test02(void) 27{ 28 typedef std::ostreambuf_iterator<char> costreambuf_iter; 29 typedef costreambuf_iter::streambuf_type cstreambuf_type; 30 bool test __attribute__((unused)) = true; 31 const char slit01[] = "playa hermosa, liberia, guanacaste"; 32 const char slit02[] = "bodega bay, lost coast, california"; 33 std::string str01(slit01); 34 std::string str02(slit02); 35 std::string tmp; 36 std::stringbuf strbuf01; 37 std::stringbuf strbuf02(str01); 38 std::ostringstream ostrs00(str01); 39 std::ostringstream ostrs01(str01); 40 41 // ctor sanity checks 42 costreambuf_iter ostrb_it01(ostrs00); 43 VERIFY( !ostrb_it01.failed() ); 44 ostrb_it01++; 45 ++ostrb_it01; 46 VERIFY( !ostrb_it01.failed() ); 47 ostrb_it01 = 'a'; 48 VERIFY( !ostrb_it01.failed() ); 49 *ostrb_it01; 50 VERIFY( !ostrb_it01.failed() ); 51 52 costreambuf_iter ostrb_it02(0); 53 VERIFY( ostrb_it02.failed() ); 54 ostrb_it02++; 55 ++ostrb_it02; 56 VERIFY( ostrb_it02.failed() ); 57 *ostrb_it02; 58 VERIFY( ostrb_it02.failed() ); 59 ostrb_it02 = 'a'; 60 VERIFY( ostrb_it02.failed() ); 61 62 // charT operator*() const 63 // ostreambuf_iterator& operator++(); 64 // ostreambuf_iterator& operator++(int); 65 costreambuf_iter ostrb_it27(ostrs01); 66 VERIFY( !ostrb_it27.failed() ); 67 int j = str02.size(); 68 for (int i = 0; i < j; ++i) 69 ostrb_it27 = str02[i]; 70 VERIFY( !ostrb_it27.failed() ); 71 tmp = ostrs01.str(); 72 VERIFY ( tmp != str01 ); 73 VERIFY ( tmp == str02 ); 74 75 costreambuf_iter ostrb_it28(ostrs00); 76 VERIFY( !ostrb_it28.failed() ); 77 j = ostrs00.str().size(); 78 for (int i = 0; i < j + 2; ++i) 79 ostrb_it28 = 'b'; 80 VERIFY( !ostrb_it28.failed() ); 81 tmp = ostrs00.str(); 82 VERIFY ( tmp != str01 ); 83 VERIFY ( tmp != str02 ); 84 return test; 85} 86 87int main() 88{ 89 test02(); 90 return 0; 91} 92