1// Copyright (C) 2004, 2009 Free Software Foundation 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// 27.6.1.3 unformatted input functions 19 20#include <cwchar> // for wcslen 21#include <istream> 22#include <sstream> 23#include <testsuite_hooks.h> 24 25// [bug] istream::getline(char*,streamsize) still broken 26// http://gcc.gnu.org/ml/libstdc++/2000-07/msg00126.html 27// brent verner <brent at rcfile dot org 28void 29test06() 30{ 31 using namespace std; 32 33 bool test __attribute__((unused)) = true; 34 const streamsize it = 5; 35 wchar_t tmp[it]; 36 const wchar_t* str_lit = L"abcd\n"; 37 38 wstringbuf strbuf(str_lit, std::ios_base::in); 39 wistream istr(&strbuf); 40 41 istr.getline(tmp,it); 42 VERIFY( istr.gcount() == it ); // extracted whole string 43 VERIFY( wcslen(tmp) == 4 ); // stored all but '\n' 44 VERIFY( !istr.eof() ); // extracted up to but not eof 45 VERIFY( !istr.fail() ); // failbit not set 46 47 wchar_t c = L'z'; 48 istr.get(c); 49 VERIFY( c == L'z' ); 50 VERIFY( istr.eof() ); 51} 52 53int 54main() 55{ 56 test06(); 57 return 0; 58} 59