1// Copyright (C) 2004-2015 Free Software Foundation, Inc. 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.2.3 character extractors 19 20#include <istream> 21#include <sstream> 22#include <testsuite_hooks.h> 23 24void test02() 25{ 26 bool test __attribute__((unused)) = true; 27 std::wstring str_01; 28 const std::wstring str_02(L"or coltrane playing tunji with jimmy garrison"); 29 const std::wstring str_03(L"coltrane"); 30 31 std::wstringbuf isbuf_01(std::ios_base::in); 32 std::wstringbuf isbuf_02(str_02, std::ios_base::in); 33 std::wistream is_01(0); 34 std::wistream is_02(&isbuf_02); 35 std::ios_base::iostate state1, state2, statefail; 36 statefail = std::ios_base::failbit; 37 38 // template<_CharT, _Traits> 39 // basic_istream& operator>>(istream&, _CharT&) 40 wchar_t c1 = L'c', c2 = L'c'; 41 state1 = is_01.rdstate(); 42 is_01 >> c1; 43 state2 = is_01.rdstate(); 44 VERIFY( state1 != state2 ); 45 VERIFY( c1 == c2 ); 46 VERIFY( static_cast<bool>(state2 & statefail) ); 47 48 state1 = is_02.rdstate(); 49 is_02 >> c1; 50 state2 = is_02.rdstate(); 51 VERIFY( state1 == state2 ); 52 VERIFY( c1 == L'o' ); 53 is_02 >> c1; 54 is_02 >> c1; 55 VERIFY( c1 == L'c' ); 56 VERIFY( !static_cast<bool>(state2 & statefail) ); 57} 58 59int main() 60{ 61 test02(); 62 return 0; 63} 64