1 // 1999-01-17 bkoz test functionality of basic_filebuf for char_type == char
2
3 // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
4 // Free Software Foundation, Inc.
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
22 // 27.8.1.1 - Template class basic_filebuf
23 // NB: This file is for testing basic_filebuf with NO OTHER INCLUDES.
24
25 #include <fstream>
26 #include <testsuite_hooks.h>
27
28 // { dg-do compile }
29
30 // libstdc++/7216
test01()31 void 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
42 // test05
43 // libstdc++/1886
44 // should be able to instantiate basic_filebuf for non-standard types.
45 namespace test
46 {
47 using namespace std;
48 using __gnu_cxx_test::pod_char;
49 typedef short type_t;
50 template class basic_filebuf<type_t, char_traits<type_t> >;
51 template class basic_filebuf<pod_char, char_traits<pod_char> >;
52 } // test
53
54
55 // test07
56 // libstdc++/2020
57 // should be able to use custom char_type
58 class gnu_char_type
59 {
60 unsigned long character;
61 public:
62 // operator ==
63 bool
operator ==(const gnu_char_type & __lhs)64 operator==(const gnu_char_type& __lhs)
65 { return character == __lhs.character; }
66
67 // operator <
68 bool
operator <(const gnu_char_type & __lhs)69 operator<(const gnu_char_type& __lhs)
70 { return character < __lhs.character; }
71
72 // default ctor
gnu_char_type()73 gnu_char_type() { }
74
75 // to_char_type
gnu_char_type(const unsigned long & __l)76 gnu_char_type(const unsigned long& __l) : character(__l) { }
77
78 // to_int_type
operator unsigned long() const79 operator unsigned long() const { return character; }
80 };
81
test07()82 void 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.
98 template
99 std::basic_streambuf<gnu_char_type>::int_type
100 std::basic_streambuf<gnu_char_type>::_S_pback_size;
101 #endif
102
main()103 int main()
104 {
105 test01();
106 test07();
107 return 0;
108 }
109
110
111
112 // more surf!!!
113
114
115
116
117
118
119
120
121
122