]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/27_io/filebuf.cc
install.html: Document complete list of locales required by test suite.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 27_io / filebuf.cc
CommitLineData
e6705174 1// 1999-01-17 bkoz test functionality of basic_filebuf for char_type == char
b2dad0e3 2
8d59b230 3// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
e6705174 4// Free Software Foundation, Inc.
b2dad0e3
BK
5//
6// This file is part of the GNU ISO C++ Library. This library is free
7// software; you can redistribute it and/or modify it under the
8// terms of the GNU General Public License as published by the
9// Free Software Foundation; either version 2, or (at your option)
10// any later version.
11
12// This library is distributed in the hope that it will be useful,
13// but WITHOUT ANY WARRANTY; without even the implied warranty of
14// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15// GNU General Public License for more details.
16
17// You should have received a copy of the GNU General Public License along
18// with this library; see the file COPYING. If not, write to the Free
19// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
20// USA.
21
bcc6a03a
BK
22// 27.8.1.1 - Template class basic_filebuf
23// NB: This file is for testing basic_filebuf with NO OTHER INCLUDES.
1b4a6975 24
b2dad0e3 25#include <fstream>
fe413112 26#include <testsuite_hooks.h>
b2dad0e3 27
e6705174 28// { dg-do compile }
c0b84d79 29
bcc6a03a
BK
30// libstdc++/7216
31void test01()
32{
33 // Check for required typedefs
34 typedef std::filebuf test_type;
35 typedef test_type::char_type char_type;
36 typedef test_type::traits_type traits_type;
37 typedef test_type::int_type int_type;
38 typedef test_type::pos_type pos_type;
39 typedef test_type::off_type off_type;
40}
41
c0a26060
BK
42// test05
43// libstdc++/1886
44// should be able to instantiate basic_filebuf for non-standard types.
f13a69ec
BK
45namespace test
46{
47 using namespace std;
8d59b230 48 using __gnu_cxx_test::pod_char;
f13a69ec
BK
49 typedef short type_t;
50 template class basic_filebuf<type_t, char_traits<type_t> >;
8d59b230 51 template class basic_filebuf<pod_char, char_traits<pod_char> >;
f13a69ec
BK
52} // test
53
54
55// test07
56// libstdc++/2020
57// should be able to use custom char_type
58class gnu_char_type
59{
60 unsigned long character;
61public:
62 // operator ==
63 bool
64 operator==(const gnu_char_type& __lhs)
65 { return character == __lhs.character; }
66
67 // operator <
68 bool
69 operator<(const gnu_char_type& __lhs)
70 { return character < __lhs.character; }
71
72 // default ctor
73 gnu_char_type() { }
74
75 // to_char_type
76 gnu_char_type(const unsigned long& __l) : character(__l) { }
77
78 // to_int_type
79 operator unsigned long() const { return character; }
80};
81
82void test07()
83{
84 bool test = true;
85 typedef std::basic_filebuf<gnu_char_type> gnu_filebuf;
86
87 try
88 { gnu_filebuf obj; }
89 catch(std::exception& obj)
90 {
91 test = false;
92 VERIFY( test );
93 }
94}
95
96#if !__GXX_WEAK__
97// Explicitly instantiate for systems with no COMDAT or weak support.
98template
99 std::basic_streambuf<gnu_char_type>::int_type
100 std::basic_streambuf<gnu_char_type>::_S_pback_size;
101#endif
c0a26060 102
e6705174 103int main()
69302d8b 104{
bcc6a03a 105 test01();
f13a69ec 106 test07();
e6705174
BK
107 return 0;
108}
69302d8b 109
69302d8b 110
39003c99 111
e6705174
BK
112// more surf!!!
113
69302d8b 114
69302d8b 115
c0a26060 116
99e9125d 117
b2dad0e3 118
b2dad0e3
BK
119
120
121