1// 1999-10-11 bkoz
2
3// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2009
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 3, 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 COPYING3.  If not see
19// <http://www.gnu.org/licenses/>.
20
21
22// 27.5.2 template class basic_streambuf
23
24#include <streambuf>
25#include <sstream>
26#include <ostream>
27#include <testsuite_hooks.h>
28
29// libstdc++/9318
30class Outbuf : public std::streambuf
31{
32public:
33  typedef std::streambuf::traits_type traits_type;
34
35  std::string result() const { return str; }
36
37protected:
38  virtual int_type overflow(int_type c = traits_type::eof())
39  {
40    if (!traits_type::eq_int_type(c, traits_type::eof()))
41      str.push_back(traits_type::to_char_type(c));
42    return traits_type::not_eof(c);
43  }
44
45private:
46  std::string str;
47};
48
49void test10()
50{
51  bool test __attribute__((unused)) = true;
52
53  std::stringbuf sbuf("Bad Moon Rising", std::ios::in);
54  Outbuf buf;
55  std::ostream stream(&buf);
56  stream << &sbuf;
57
58  VERIFY( buf.result() == "Bad Moon Rising" );
59}
60
61int main()
62{
63  test10();
64  return 0;
65}
66