1// 1999-08-11 bkoz 2 3// Copyright (C) 1999, 2000, 2001, 2002, 2003, 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// 27.6.1.3 unformatted input functions 21 22#include <istream> 23#include <sstream> 24#include <testsuite_hooks.h> 25 26void 27test03() 28{ 29 typedef std::char_traits<char> traits_type; 30 31 bool test __attribute__((unused)) = true; 32 const char str_lit01[] = 33 " sun*ra \n\t\t\t & his arkestra, featuring john gilmore: \n" 34 " " 35 "jazz in silhouette: images and forecasts of tomorrow"; 36 37 std::string str01(str_lit01); 38 std::string strtmp; 39 40 std::stringbuf sbuf_03; 41 std::stringbuf sbuf_04(str01, std::ios_base::in); 42 std::stringbuf sbuf_05(str01, std::ios_base::in); 43 44 std::istream is_00(NULL); 45 std::istream is_04(&sbuf_04); 46 std::istream is_05(&sbuf_05); 47 std::ios_base::iostate statefail, stateeof; 48 statefail = std::ios_base::failbit; 49 stateeof = std::ios_base::eofbit; 50 char carray1[400] = ""; 51 52 // int_type get() 53 // istream& get(char*, streamsize, char delim) 54 // istream& get(char*, streamsize) 55 // istream& get(streambuf&, char delim) 56 // istream& get(streambuf&) 57 is_00.get(carray1, 2); 58 VERIFY( static_cast<bool>(is_00.rdstate() & statefail) ); 59 VERIFY( is_00.gcount() == 0 ); 60 61 is_04.get(carray1, 4); 62 VERIFY( !(is_04.rdstate() & statefail) ); 63 VERIFY( !traits_type::compare(carray1, " ", 4) ); 64 VERIFY( is_04.gcount() == 3 ); 65 66 is_04.clear(); 67 is_04.get(carray1 + 3, 200); 68 VERIFY( !(is_04.rdstate() & statefail) ); 69 VERIFY( !(is_04.rdstate() & stateeof) ); 70 VERIFY( !traits_type::compare(carray1, str_lit01, 10) ); 71 VERIFY( is_04.gcount() == 7 ); 72 73 is_04.clear(); 74 is_04.get(carray1, 200); 75 VERIFY( !(is_04.rdstate() & stateeof) ); 76 VERIFY( static_cast<bool>(is_04.rdstate() & statefail) ); // delimiter 77 VERIFY( is_04.gcount() == 0 ); 78 is_04.clear(); 79 is_04.get(carray1, 200, '['); 80 VERIFY( static_cast<bool>(is_04.rdstate() & stateeof) ); 81 VERIFY( !(is_04.rdstate() & statefail) ); 82 VERIFY( is_04.gcount() == 125 ); 83 is_04.clear(); 84 is_04.get(carray1, 200); 85 VERIFY( static_cast<bool>(is_04.rdstate() & stateeof) ); 86 VERIFY( static_cast<bool>(is_04.rdstate() & statefail) ); 87 VERIFY( is_04.gcount() == 0 ); 88 89 std::stringbuf sbuf_02(std::ios_base::in); 90 is_05.clear(); 91 is_05.get(sbuf_02); 92 VERIFY( is_05.gcount() == 0 ); 93 VERIFY( static_cast<bool>(is_05.rdstate() & statefail) ); 94 VERIFY( !(is_05.rdstate() & stateeof) ); 95 96 is_05.clear(); 97 is_05.get(sbuf_03); 98 VERIFY( is_05.gcount() == 10 ); 99 VERIFY( sbuf_03.str() == " sun*ra " ); 100 VERIFY( !(is_05.rdstate() & statefail) ); 101 VERIFY( !(is_05.rdstate() & stateeof) ); 102 103 is_05.clear(); 104 is_05.get(sbuf_03, '|'); 105 VERIFY( is_05.gcount() == 125 ); 106 VERIFY( sbuf_03.str() == str_lit01 ); 107 VERIFY( !(is_05.rdstate() & statefail) ); 108 VERIFY( static_cast<bool>(is_05.rdstate() & stateeof) ); 109 110 is_05.clear(); 111 is_05.get(sbuf_03, '|'); 112 VERIFY( is_05.gcount() == 0 ); 113 VERIFY( static_cast<bool>(is_05.rdstate() & stateeof) ); 114 VERIFY( static_cast<bool>(is_05.rdstate() & statefail) ); 115} 116 117int 118main() 119{ 120 test03(); 121 return 0; 122} 123