1// Copyright (C) 2005, 2009 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.2.6 Unformatted output functions 19// 20// _GLIBCXX_RESOLVE_LIB_DEFECTS 21// DR 60. What is a formatted input function? 22// basic_ostream::flush() does not behave as an unformatted output function. 23 24#include <ostream> 25#include <testsuite_hooks.h> 26#include <testsuite_io.h> 27 28void test02() 29{ 30 bool test __attribute__((unused)) = true; 31 32 __gnu_test::sync_wstreambuf buf; 33 std::wostream os(&buf); 34 35 __gnu_test::sync_wstreambuf buf_tie; 36 std::wostream os_tie(&buf_tie); 37 38 // No sentry should be constructed so os.tie()->flush() should not be 39 // called. 40 os.tie(&os_tie); 41 42 os.flush(); 43 44 VERIFY( os.good() ); 45 VERIFY( buf.sync_called() ); 46 VERIFY( !buf_tie.sync_called() ); 47 48 // os.rdbuf()->pubsync() should be called even if !os.good(). 49 os.setstate(std::ios_base::eofbit); 50 51 os.flush(); 52 53 VERIFY( os.rdstate() == std::ios_base::eofbit ); 54 VERIFY( buf.sync_called() ); 55 VERIFY( !buf_tie.sync_called() ); 56} 57 58int main() 59{ 60 test02(); 61 return 0; 62} 63 64