1// 2006-03-20  Paolo Carlini  <pcarlini@suse.de>
2
3// Copyright (C) 2006, 2009 Free Software Foundation, Inc.
4//
5// This file is part of the GNU ISO C++ Library.  This library is free
6// software; you can redistribute it and/or modify it under the
7// terms of the GNU General Public License as published by the
8// Free Software Foundation; either version 3, or (at your option)
9// any later version.
10
11// This library is distributed in the hope that it will be useful,
12// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14// GNU General Public License for more details.
15
16// You should have received a copy of the GNU General Public License along
17// with this library; see the file COPYING3.  If not see
18// <http://www.gnu.org/licenses/>.
19
20#include <iterator>
21#include <sstream>
22#include <algorithm>
23#include <testsuite_hooks.h>
24
25// In the occasion of libstdc++/25482
26void test01()
27{
28  bool test __attribute__((unused)) = true;
29  using namespace std;
30
31  typedef ostreambuf_iterator<char> out_iterator_type;
32
33  const char data1[] = "Drei Phantasien nach Friedrich Holderlin";
34  const string str1(data1);
35  const char* beg1 = data1;
36  const char* end1 = beg1 + str1.size();
37
38  ostringstream oss1;
39  out_iterator_type out1(oss1);
40
41  out1 = copy(beg1, beg1, out1);
42  VERIFY( oss1.str().empty() );
43
44  out1 = copy(end1, end1, out1);
45  VERIFY( oss1.str().empty() );
46
47  out1 = copy(beg1, end1, out1);
48  VERIFY( oss1.str() == str1 );
49  *out1 = 'x';
50  VERIFY( oss1.str() == str1 + 'x' );
51  oss1.str("");
52
53  oss1.seekp(0);
54  oss1.str("");
55  out1 = copy(beg1, end1, out1);
56  VERIFY( oss1.str() == str1 );
57  *out1 = 'y';
58  VERIFY( oss1.str() == str1 + 'y' );
59  oss1.str("");
60  out1 = copy(beg1, end1, out1);
61  VERIFY( oss1.str() == str1 );
62
63  out1 = copy(beg1, end1, out1);
64  VERIFY( oss1.str() == str1 + str1 );
65}
66
67int main()
68{
69  test01();
70  return 0;
71}
72