OLD | NEW |
| (Empty) |
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::write(const char_type*, streamsize) is an unformatted | |
23 // output function. | |
24 // DR 63. Exception-handling policy for unformatted output. | |
25 // Unformatted output functions should catch exceptions thrown | |
26 // from streambuf members. | |
27 | |
28 #include <ostream> | |
29 #include <streambuf> | |
30 #include <testsuite_hooks.h> | |
31 | |
32 class Buf : public std::wstreambuf | |
33 { | |
34 protected: | |
35 virtual int_type | |
36 overflow(int_type = traits_type::eof()) | |
37 { throw 0; } | |
38 }; | |
39 | |
40 void test01() | |
41 { | |
42 bool test __attribute__((unused)) = true; | |
43 | |
44 Buf buf; | |
45 std::wostream os(&buf); | |
46 | |
47 VERIFY( os.good() ); | |
48 | |
49 os.write(L"a", 1); | |
50 | |
51 VERIFY( os.rdstate() == std::ios_base::badbit ); | |
52 | |
53 os.clear(); | |
54 os.exceptions(std::ios_base::badbit); | |
55 | |
56 try | |
57 { | |
58 os.write(L"b", 1); | |
59 VERIFY( false ); | |
60 } | |
61 catch (int) | |
62 { | |
63 VERIFY( os.rdstate() == std::ios_base::badbit ); | |
64 } | |
65 } | |
66 | |
67 int main() | |
68 { | |
69 test01(); | |
70 return 0; | |
71 } | |
OLD | NEW |