]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/27_io/ios_init.cc
acinclude.m4 (GLIBCPP_CONFIGURE_TESTSUITE): New macro, calls...
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 27_io / ios_init.cc
CommitLineData
5de197f2
BK
1// 2001-06-05 Benjamin Kosnik <bkoz@redhat.com>
2
3// Copyright (C) 2001 Free Software Foundation, Inc.
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// As a special exception, you may use this file as part of a free software
22// library without restriction. Specifically, if other files instantiate
23// templates or use macros or inline functions from this file, or you compile
24// this file and link it with other files to produce an executable, this
25// file does not by itself cause the resulting executable to be covered by
26// the GNU General Public License. This exception does not however
27// invalidate any other reasons why the executable file might be covered by
28// the GNU General Public License.
29
30// 27.4.2.1.6 class ios_base::init
31
32#include <fstream>
33#include <iostream>
fe413112 34#include <testsuite_hooks.h>
5de197f2
BK
35
36class gnu_filebuf: public std::filebuf
37{
38 int i;
39public:
40 gnu_filebuf(int j = 1): i(j) { }
41 ~gnu_filebuf() { --i; }
42 int get_i() { return i;}
43};
44
45const int initial = 4;
46gnu_filebuf buf(initial);
47
48// libstdc++/3045, in a vague way.
49void test01()
50{
51 bool test = true;
52 int k1;
53
54 // 1 normal
55 k1 = buf.get_i();
56 VERIFY( k1 == initial );
57 {
58 std::cout.rdbuf(&buf);
59 }
60 k1 = buf.get_i();
61 VERIFY( k1 == initial );
62
63 // 2 syncd off
64 k1 = buf.get_i();
65 VERIFY( k1 == initial );
66 {
67 std::cout.rdbuf(&buf);
68 std::ios_base::sync_with_stdio(false); // make sure doesn't clobber buf
69 }
70 k1 = buf.get_i();
71 VERIFY( k1 == initial );
72
73 // 3 callling init
74 k1 = buf.get_i();
75 VERIFY( k1 == initial );
76 {
77 std::cout.rdbuf(&buf);
78 std::ios_base::Init make_sure_initialized;
79 }
80 k1 = buf.get_i();
81 VERIFY( k1 == initial );
82}
83
84int main()
85{
86 test01();
87 return 0;
88}