1 // Copyright (C) 2004-2014 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 #include <istream> 19 #include <streambuf> 20 #include <testsuite_hooks.h> 21 #include <testsuite_io.h> 22 23 // libstdc++/9561 test01()24void test01() 25 { 26 using namespace std; 27 bool test __attribute__((unused)) = true; 28 29 __gnu_test::fail_wstreambuf b; 30 std::wistream strm (&b); 31 strm.exceptions (std::wios::badbit); 32 wchar_t i = 0; 33 34 try 35 { 36 i = strm.get(); 37 i = strm.get(); 38 i = strm.get(); 39 } 40 catch (__gnu_test::underflow_error&) 41 { 42 // strm should throw facet_error and not do anything else 43 VERIFY(strm.bad()); 44 } 45 catch (...) 46 { 47 VERIFY( false ); 48 } 49 50 VERIFY( i == L's' ); 51 } 52 53 main()54int main() 55 { 56 test01(); 57 return 0; 58 } 59