]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/27_io/objects/char/3045.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 27_io / objects / char / 3045.cc
CommitLineData
23cac885 1// 2001-06-05 Benjamin Kosnik <bkoz@redhat.com>
afb6c265 2
8d9254fc 3// Copyright (C) 2001-2020 Free Software Foundation, Inc.
afb6c265
PC
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)
afb6c265
PC
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/>.
afb6c265 19
afb6c265 20
23cac885
BK
21#include <fstream>
22#include <iostream>
afb6c265
PC
23#include <testsuite_hooks.h>
24
23cac885 25class gnu_filebuf: public std::filebuf
ff5d863f 26{
23cac885
BK
27 int i;
28public:
29 gnu_filebuf(int j = 1): i(j) { }
30 ~gnu_filebuf() { --i; }
31 int get_i() { return i;}
ff5d863f
PC
32};
33
23cac885
BK
34const int initial = 4;
35gnu_filebuf buf(initial);
36
37// libstdc++/3045, in a vague way.
38void test01()
ff5d863f 39{
23cac885 40 int k1;
ff5d863f 41
23cac885
BK
42 // 1 normal
43 k1 = buf.get_i();
44 VERIFY( k1 == initial );
45 {
46 std::cout.rdbuf(&buf);
47 }
48 k1 = buf.get_i();
49 VERIFY( k1 == initial );
ff5d863f 50
23cac885
BK
51 // 2 syncd off
52 k1 = buf.get_i();
53 VERIFY( k1 == initial );
54 {
55 std::cout.rdbuf(&buf);
56 std::ios_base::sync_with_stdio(false); // make sure doesn't clobber buf
57 }
58 k1 = buf.get_i();
59 VERIFY( k1 == initial );
ff5d863f 60
23cac885
BK
61 // 3 callling init
62 k1 = buf.get_i();
63 VERIFY( k1 == initial );
64 {
65 std::cout.rdbuf(&buf);
66 std::ios_base::Init make_sure_initialized;
67 }
68 k1 = buf.get_i();
69 VERIFY( k1 == initial );
ff5d863f
PC
70}
71
23cac885 72int main()
afb6c265
PC
73{
74 test01();
75 return 0;
76}