1// 1999-08-11 bkoz 2 3// Copyright (C) 1999-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// 27.6.1.3 unformatted input functions 21 22#include <istream> 23#include <sstream> 24#include <testsuite_hooks.h> 25 26void 27test01() 28{ 29 typedef std::ios::traits_type traits_type; 30 31 bool test __attribute__((unused)) = true; 32 const std::string str_01; 33 const std::string str_02("soul eyes: john coltrane quartet"); 34 std::string strtmp; 35 36 std::stringbuf isbuf_03(str_02, std::ios_base::in); 37 std::stringbuf isbuf_04(str_02, std::ios_base::in); 38 39 std::istream is_00(0); 40 std::istream is_03(&isbuf_03); 41 std::istream is_04(&isbuf_04); 42 std::ios_base::iostate state1, state2; 43 44 char carray[60] = ""; 45 46 // istream& ignore(streamsize n = 1, int_type delim = traits::eof()) 47 is_04.read(carray, 9); 48 VERIFY( is_04.peek() == ':' ); 49 50 state1 = is_04.rdstate(); 51 is_04.ignore(); 52 VERIFY( is_04.gcount() == 1 ); 53 state2 = is_04.rdstate(); 54 VERIFY( state1 == state2 ); 55 VERIFY( is_04.peek() == ' ' ); 56 57 state1 = is_04.rdstate(); 58 is_04.ignore(0); 59 VERIFY( is_04.gcount() == 0 ); 60 state2 = is_04.rdstate(); 61 VERIFY( state1 == state2 ); 62 VERIFY( is_04.peek() == ' ' ); 63 64 state1 = is_04.rdstate(); 65 is_04.ignore(5, traits_type::to_int_type(' ')); 66 VERIFY( is_04.gcount() == 1 ); 67 state2 = is_04.rdstate(); 68 VERIFY( state1 == state2 ); 69 VERIFY( is_04.peek() == 'j' ); 70 71 // int_type peek() 72 state1 = is_04.rdstate(); 73 VERIFY( is_04.peek() == 'j' ); 74 VERIFY( is_04.gcount() == 0 ); 75 state2 = is_04.rdstate(); 76 VERIFY( state1 == state2 ); 77 78 is_04.ignore(30); 79 state1 = is_04.rdstate(); 80 VERIFY( is_04.peek() == traits_type::eof() ); 81 VERIFY( is_04.gcount() == 0 ); 82 state2 = is_04.rdstate(); 83 VERIFY( state1 != state2 ); 84} 85 86int 87main() 88{ 89 test01(); 90 return 0; 91} 92