]>
gcc.gnu.org Git - gcc.git/blob - libstdc++-v3/testsuite/27_io/filebuf_members.cc
1 // Copyright (C) 2000 Free Software Foundation, Inc.
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 2, or (at your option)
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.
14 // You should have received a copy of the GNU General Public License along
15 // with this library; see the file COPYING. If not, write to the Free
16 // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
19 // 27.8.1.3 filebuf member functions
21 // various tests for filebuf::open() and filebuf::close() including
22 // the non-portable functionality in the libstdc++-v3 IO library
30 // verify that std::filebuf doesn't close files that it didn't open
31 // when using the following std::filebuf ctor:
33 // std::filebuf(int __fd,
34 // const char* __unused,
35 // ios_base::openmode __mode);
37 // thanks to "George T. Talbot" <george@moberg.com> for uncovering
38 // this bug/situation.
40 const char name_01
[] = "testsuite/filebuf_members-1.tst";
41 const char name_02
[] = "testsuite/filebuf_members-1.txt";
50 int fd
= open(name_01
, O_RDONLY
);
54 std::filebuf
fb(fd
, "double_read", std::ios_base::in
);
57 close_num
= close(fd
);
58 test
&= close_num
== 0;
62 FILE* f
= fopen(name_01
, "r");
66 std::ifstream
ifstream1(name_01
);
67 test
&= ifstream1
.is_open();
68 std::ios_base::iostate st01
= ifstream1
.rdstate();
69 test
&= st01
== std::ios_base::goodbit
;
72 close_num
= fclose(f
);
73 test
&= close_num
== 0;
This page took 0.038883 seconds and 5 git commands to generate.