]> git.ipfire.org Git - thirdparty/gcc.git/blob - 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
1 // Copyright (C) 2004-2020 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 // @require@ %-*.tst %-*.txt
20 // @diff@ %-*.tst %-*.txt
21
22 // { dg-require-fileio "" }
23
24 #include <istream>
25 #include <fstream>
26 #include <limits>
27 #include <testsuite_hooks.h>
28
29 // istream& ignore(streamsize n)
30 void
31 test01()
32 {
33 using namespace std;
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
90 int
91 main()
92 {
93 test01();
94 return 0;
95 }