]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/3.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 27_io / basic_istream / ignore / wchar_t / 3.cc
CommitLineData
8d9254fc 1// Copyright (C) 2004-2020 Free Software Foundation, Inc.
f8e7ffa6
PC
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
748086b7 6// Free Software Foundation; either version 3, or (at your option)
f8e7ffa6
PC
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
748086b7
JJ
15// with this library; see the file COPYING3. If not see
16// <http://www.gnu.org/licenses/>.
f8e7ffa6
PC
17
18// 27.6.1.3 unformatted input functions
19// @require@ %-*.tst %-*.txt
20// @diff@ %-*.tst %-*.txt
21
6cec3c81
SL
22// { dg-require-fileio "" }
23
f8e7ffa6
PC
24#include <istream>
25#include <fstream>
26#include <limits>
27#include <testsuite_hooks.h>
28
29// istream& ignore(streamsize n)
30void
31test01()
32{
33 using namespace std;
f8e7ffa6
PC
34
35 const char filename[] ="istream_unformatted-1.txt";
36 ios_base::iostate state1, state2;
37
38 wifstream ifstrm;
39 ifstrm.open(filename);
40
41 state1 = ifstrm.rdstate();
42 VERIFY( state1 == ios_base::goodbit );
43 VERIFY( ifstrm.peek() == L'1' );
44 state2 = ifstrm.rdstate();
45 VERIFY( state1 == state2 );
46
47 state1 = ifstrm.rdstate();
48 ifstrm.ignore(1);
49 VERIFY( ifstrm.gcount() == 1 );
50 state2 = ifstrm.rdstate();
51 VERIFY( state1 == state2 );
52 VERIFY( ifstrm.peek() == L'2' );
53
54 state1 = ifstrm.rdstate();
55 ifstrm.ignore(10);
56 VERIFY( ifstrm.gcount() == 10 );
57 state2 = ifstrm.rdstate();
58 VERIFY( state1 == state2 );
59 VERIFY( ifstrm.peek() == L'1' );
60
61 state1 = ifstrm.rdstate();
62 ifstrm.ignore(100);
63 VERIFY( ifstrm.gcount() == 100 );
64 state2 = ifstrm.rdstate();
65 VERIFY( state1 == state2 );
66 VERIFY( ifstrm.peek() == L'2' );
67
68 state1 = ifstrm.rdstate();
69 ifstrm.ignore(1000);
70 VERIFY( ifstrm.gcount() == 1000 );
71 state2 = ifstrm.rdstate();
72 VERIFY( state1 == state2 );
73 VERIFY( ifstrm.peek() == L'1' );
74
75 state1 = ifstrm.rdstate();
76 ifstrm.ignore(10000);
77 VERIFY( ifstrm.gcount() == 10000 );
78 state2 = ifstrm.rdstate();
79 VERIFY( state1 == state2 );
80 VERIFY( ifstrm.peek() == L'2' );
81
82 state1 = ifstrm.rdstate();
83 ifstrm.ignore(numeric_limits<streamsize>::max());
84 VERIFY( ifstrm.gcount() == 5389 );
85 state2 = ifstrm.rdstate();
86 VERIFY( state1 != state2 );
87 VERIFY( state2 == ios_base::eofbit );
88}
89
90int
91main()
92{
93 test01();
94 return 0;
95}