1// Copyright (C) 2004, 2009 Free Software Foundation
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
20#include <cwchar> // for wcslen
21#include <istream>
22#include <sstream>
23#include <testsuite_hooks.h>
24
25// [bug] istream::getline(char*,streamsize) still broken
26// http://gcc.gnu.org/ml/libstdc++/2000-07/msg00126.html
27// brent verner <brent at rcfile dot org
28void
29test06()
30{
31  using namespace std;
32
33  bool test __attribute__((unused)) = true;
34  const streamsize it = 5;
35  wchar_t tmp[it];
36  const wchar_t* str_lit = L"abcd\n";
37
38  wstringbuf strbuf(str_lit, std::ios_base::in);
39  wistream istr(&strbuf);
40
41  istr.getline(tmp,it);
42  VERIFY( istr.gcount() == it );  // extracted whole string
43  VERIFY( wcslen(tmp) == 4 );     // stored all but '\n'
44  VERIFY( !istr.eof() );          // extracted up to but not eof
45  VERIFY( !istr.fail() );         // failbit not set
46
47  wchar_t c = L'z';
48  istr.get(c);
49  VERIFY( c == L'z' );
50  VERIFY( istr.eof() );
51}
52
53int
54main()
55{
56  test06();
57  return 0;
58}
59