1// Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
2//
3// This file is part of the GNU ISO C++ Library.  This library is free
4// software; you can redistribute it and/or modify it under the
5// terms of the GNU General Public License as published by the
6// Free Software Foundation; either version 2, or (at your option)
7// any later version.
8
9// This library is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12// GNU General Public License for more details.
13
14// You should have received a copy of the GNU General Public License along
15// with this library; see the file COPYING.  If not, write to the Free
16// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
17// USA.
18
19// 27.7.6 member functions (stringstream_members)
20
21#include <sstream>
22#include <testsuite_hooks.h>
23
24void test01()
25{
26  bool test __attribute__((unused)) = true;
27  std::wstringstream is01;
28  const std::wstring str00;
29  const std::wstring str01 = L"123";
30  std::wstring str02;
31  const int i01 = 123;
32  int a = 0, b = 0;
33
34  std::ios_base::iostate state1, state2, stateeof;
35  stateeof = std::ios_base::eofbit;
36
37  // string str() const
38  str02 = is01.str();
39  VERIFY( str00 == str02 );
40
41  // void str(const basic_string&)
42  is01.str(str01);
43  str02 = is01.str();
44  VERIFY( str01 == str02 );
45  state1 = is01.rdstate();
46  is01 >> a;
47  state2 = is01.rdstate();
48  VERIFY( a == i01 );
49  // 22.2.2.1.2 num_get virtual functions
50  // p 13
51  // in any case, if stage 2 processing was terminated by the test for
52  // in == end then err != ios_base::eofbit is performed.
53  VERIFY( state1 != state2 );
54  VERIFY( state2 == stateeof );
55
56  is01.str(str01);
57  is01 >> b;
58  VERIFY( b != a );
59  // as is01.good() is false, istream::sentry blocks extraction.
60
61  is01.clear();
62  state1 = is01.rdstate();
63  is01 >> b;
64  state2 = is01.rdstate();
65  VERIFY( b == a );
66  VERIFY( state1 != state2 );
67  VERIFY( state2 == stateeof );
68}
69
70int main()
71{
72  test01();
73  return 0;
74}
75