1// Copyright (C) 2003 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 2, 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 COPYING. If not, write to the Free 16// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 17// USA. 18 19// DR 49 states that cin.rdbuf()->sbumpc() and fgetc(stdin) should be 20// equivalent and interchangable. Currently however, cin.rdbuf()->sungetc() 21// only returns characters that were read with cin.rdbuf()->sbumpc() 22 23// { dg-do run { xfail *-*-* } } 24 25#include <iostream> 26#include <cstdio> 27#include <cwchar> 28#include <testsuite_hooks.h> 29 30void 31test01() 32{ 33 std::freopen("cin_unget-1.txt", "r", stdin); 34 35 wchar_t c1; 36 std::wint_t c2; 37 wchar_t c3; 38 std::wcin.get(c1); 39 c2 = std::fgetwc(stdin); 40 std::wcin.unget(); 41 if (std::wcin.good()) 42 { 43 std::wcin.get(c3); 44 VERIFY( std::wcin.good() ); 45 VERIFY( c3 == std::char_traits<wchar_t>::to_char_type(c2) ); 46 } 47} 48 49int main(void) 50{ 51 test01(); 52 return 0; 53} 54