3 // Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
5 // Free Software Foundation, Inc.
7 // This file is part of the GNU ISO C++ Library. This library is free
8 // software; you can redistribute it and/or modify it under the
9 // terms of the GNU General Public License as published by the
10 // Free Software Foundation; either version 3, or (at your option)
13 // This library is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 // GNU General Public License for more details.
18 // You should have received a copy of the GNU General Public License along
19 // with this library; see the file COPYING3. If not see
20 // <http://www.gnu.org/licenses/>.
23 // 27.5.2 template class basic_streambuf
27 #include <testsuite_hooks.h>
29 class testbuf
: public std::streambuf
34 typedef std::streambuf::traits_type traits_type
;
35 typedef std::streambuf::char_type char_type
;
37 testbuf(): std::streambuf()
43 bool test
__attribute__((unused
)) = true;
44 VERIFY( !this->eback() );
45 VERIFY( !this->gptr() );
46 VERIFY( !this->egptr() );
47 VERIFY( !this->pbase() );
48 VERIFY( !this->pptr() );
49 VERIFY( !this->epptr() );
55 { return (this->uflow()); }
58 pub_overflow(int_type __c
= traits_type::eof())
59 { return (this->overflow(__c
)); }
62 pub_pbackfail(int_type __c
)
63 { return (this->pbackfail(__c
)); }
66 pub_setg(char* beg
, char* cur
, char *end
)
67 { this->setg(beg
, cur
, end
); }
70 pub_setp(char* beg
, char* end
)
71 { this->setp(beg
, end
); }
77 int_type __retval
= traits_type::eof();
78 if (this->gptr() < this->egptr())
79 __retval
= traits_type::not_eof(0);
86 typedef testbuf::traits_type traits_type
;
87 typedef testbuf::int_type int_type
;
89 bool test
__attribute__((unused
)) = true;
91 char lit01
[] = "chicago underground trio/possible cube on delmark";
92 size_t i01
= traits_type::length(lit01
);
96 // 27.5.2.1 basic_streambuf ctors
97 // default ctor initializes
98 // - all pointer members to null pointers
99 // - locale to current global locale
100 VERIFY( buf01
.check_pointers() );
101 VERIFY( buf01
.getloc() == std::locale() );
103 // 27.5.2.2.5 Put area
106 std::memset(carray01
, 0, i01
);
108 buf01
.pub_setg(lit01
, lit01
, lit01
+ i01
);
109 buf01
.sgetn(carray01
, 0);
110 VERIFY( carray01
[0] == 0 );
111 buf01
.sgetn(carray01
, 1);
112 VERIFY( carray01
[0] == 'c' );
113 buf01
.sgetn(carray01
+ 1, i01
- 1);
114 VERIFY( carray01
[0] == 'c' );
115 VERIFY( carray01
[1] == 'h' );
116 VERIFY( carray01
[i01
- 1] == 'k' );