1// Copyright (C) 2004-2015 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 3, 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 COPYING3.  If not see
16// <http://www.gnu.org/licenses/>.
17
18// 27.6.1.3 unformatted input functions
19// NB: ostream has a particular "seeks" category. Adopt this for istreams too.
20
21#include <istream>
22#include <sstream>
23#include <testsuite_hooks.h>
24
25// libstdc++/8348
26void test06(void)
27{
28  using namespace std;
29  bool test __attribute__((unused)) = true;
30  wstring num1(L"555");
31
32  // tellg
33  {
34    wistringstream iss(num1);
35    iss.tellg();
36    int asNum = 0;
37    iss >> asNum;
38    VERIFY( test = iss.eof() );
39    VERIFY( test = !iss.fail() );
40    iss.clear();
41    iss.tellg();
42    VERIFY( test = !iss.fail() );
43  }
44
45  // seekg
46  {
47    wistringstream iss(num1);
48    iss.tellg();
49    int asNum = 0;
50    iss >> asNum;
51    VERIFY( test = iss.eof() );
52    VERIFY( test = !iss.fail() );
53    iss.seekg(0, ios_base::beg);
54    VERIFY( test = !iss.fail() );
55  }
56
57  // seekg
58  {
59    wistringstream iss(num1);
60    wistream::pos_type pos1 = iss.tellg();
61    int asNum = 0;
62    iss >> asNum;
63    VERIFY( test = iss.eof() );
64    VERIFY( test = !iss.fail() );
65    iss.seekg(pos1);
66    VERIFY( test = !iss.fail() );
67  }
68}
69
70int main()
71{
72  test06();
73  return 0;
74}
75