]> 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-2018 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 #include <istream>
23 #include <fstream>
24 #include <limits>
25 #include <testsuite_hooks.h>
26
27 // istream& ignore(streamsize n)
28 void
29 test01()
30 {
31 using namespace std;
32
33 const char filename[] ="istream_unformatted-1.txt";
34 ios_base::iostate state1, state2;
35
36 wifstream ifstrm;
37 ifstrm.open(filename);
38
39 state1 = ifstrm.rdstate();
40 VERIFY( state1 == ios_base::goodbit );
41 VERIFY( ifstrm.peek() == L'1' );
42 state2 = ifstrm.rdstate();
43 VERIFY( state1 == state2 );
44
45 state1 = ifstrm.rdstate();
46 ifstrm.ignore(1);
47 VERIFY( ifstrm.gcount() == 1 );
48 state2 = ifstrm.rdstate();
49 VERIFY( state1 == state2 );
50 VERIFY( ifstrm.peek() == L'2' );
51
52 state1 = ifstrm.rdstate();
53 ifstrm.ignore(10);
54 VERIFY( ifstrm.gcount() == 10 );
55 state2 = ifstrm.rdstate();
56 VERIFY( state1 == state2 );
57 VERIFY( ifstrm.peek() == L'1' );
58
59 state1 = ifstrm.rdstate();
60 ifstrm.ignore(100);
61 VERIFY( ifstrm.gcount() == 100 );
62 state2 = ifstrm.rdstate();
63 VERIFY( state1 == state2 );
64 VERIFY( ifstrm.peek() == L'2' );
65
66 state1 = ifstrm.rdstate();
67 ifstrm.ignore(1000);
68 VERIFY( ifstrm.gcount() == 1000 );
69 state2 = ifstrm.rdstate();
70 VERIFY( state1 == state2 );
71 VERIFY( ifstrm.peek() == L'1' );
72
73 state1 = ifstrm.rdstate();
74 ifstrm.ignore(10000);
75 VERIFY( ifstrm.gcount() == 10000 );
76 state2 = ifstrm.rdstate();
77 VERIFY( state1 == state2 );
78 VERIFY( ifstrm.peek() == L'2' );
79
80 state1 = ifstrm.rdstate();
81 ifstrm.ignore(numeric_limits<streamsize>::max());
82 VERIFY( ifstrm.gcount() == 5389 );
83 state2 = ifstrm.rdstate();
84 VERIFY( state1 != state2 );
85 VERIFY( state2 == ios_base::eofbit );
86 }
87
88 int
89 main()
90 {
91 test01();
92 return 0;
93 }