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