]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/27_io/basic_ostream/put/char/1.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 27_io / basic_ostream / put / char / 1.cc
CommitLineData
5681c890
PR
1// 2003-09-22 Petur Runolfsson <peturr02@ru.is>
2
85ec4feb 3// Copyright (C) 2003-2018 Free Software Foundation, Inc.
5681c890
PR
4//
5// This file is part of the GNU ISO C++ Library. This library is free
6// software; you can redistribute it and/or modify it under the
7// terms of the GNU General Public License as published by the
748086b7 8// Free Software Foundation; either version 3, or (at your option)
5681c890
PR
9// any later version.
10
11// This library is distributed in the hope that it will be useful,
12// but WITHOUT ANY WARRANTY; without even the implied warranty of
13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14// GNU General Public License for more details.
15
16// You should have received a copy of the GNU General Public License along
748086b7
JJ
17// with this library; see the file COPYING3. If not see
18// <http://www.gnu.org/licenses/>.
5681c890
PR
19
20// 27.6.2.6 Unformatted output functions
21//
22// _GLIBCXX_RESOLVE_LIB_DEFECTS
23// DR 60. What is a formatted input function?
24// basic_ostream::put(char_type) is an unformatted output function.
25// DR 63. Exception-handling policy for unformatted output.
26// Unformatted output functions should catch exceptions thrown
27// from streambuf members.
28
29#include <ostream>
30#include <streambuf>
31#include <testsuite_hooks.h>
32
33class Buf : public std::streambuf
34{
35protected:
ba4b172f
PC
36 virtual int_type
37 overflow(int_type = traits_type::eof())
5681c890
PR
38 { throw 0; }
39};
40
41void test01()
42{
5681c890
PR
43 Buf buf;
44 std::ostream os(&buf);
45
46 VERIFY( os.good() );
47
48 os.put('a');
49
50 VERIFY( os.rdstate() == std::ios_base::badbit );
51
52 os.clear();
53 os.exceptions(std::ios_base::badbit);
54
55 try
56 {
57 os.put('b');
58 VERIFY( false );
59 }
60 catch (int)
61 {
62 VERIFY( os.rdstate() == std::ios_base::badbit );
63 }
64}
65
66int main()
67{
68 test01();
69 return 0;
70}