]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/27_io/ios_base_storage.cc
configure.in, configure: Fix SPARC test in previous change.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 27_io / ios_base_storage.cc
CommitLineData
713c16f8
BK
1// 2000-12-19 bkoz
2
663653eb 3// Copyright (C) 2000, 2002 Free Software Foundation
713c16f8
BK
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
8// Free Software Foundation; either version 2, or (at your option)
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
17// with this library; see the file COPYING. If not, write to the Free
18// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
19// USA.
20
21// 27.4.2.5 ios_base storage functions
22
23#include <sstream>
24#include <iostream>
25
fe413112 26#include <testsuite_hooks.h>
713c16f8
BK
27
28// http://gcc.gnu.org/ml/gcc-bugs/2000-12/msg00413.html
29void test01()
30{
31 bool test = true;
32
33 using namespace std;
34
35 long x1 = ios::xalloc();
36 long x2 = ios::xalloc();
37 long x3 = ios::xalloc();
38 long x4 = ios::xalloc();
39
40 ostringstream out("the element of crime, lars von trier");
41 out.pword(++x4); // should not crash
42}
43
663653eb
BK
44// libstdc++/3129
45void test02()
46{
47 bool test = true;
48 int max = std::numeric_limits<int>::max();
49 std::stringbuf strbuf;
50 std::ios ios(&strbuf);
51
52 long l = 0;
53 void* v = 0;
54
55 // pword
56 try
57 {
58 v = ios.pword(max);
59 }
60 catch(std::ios_base::failure& obj)
61 {
62 // Ok.
63 VERIFY( ios.bad() );
64 }
65 catch(...)
66 {
67 VERIFY( test = false );
68 }
69 VERIFY( v == 0 );
70
71 // iword
72 try
73 {
74 l = ios.iword(max);
75 }
76 catch(std::ios_base::failure& obj)
77 {
78 // Ok.
79 VERIFY( ios.bad() );
80 }
81 catch(...)
82 {
83 VERIFY( test = false );
84 }
85 VERIFY( l == 0 );
86}
713c16f8
BK
87
88int main(void)
89{
90 test01();
663653eb 91 test02();
713c16f8
BK
92 return 0;
93}