edd822df460c11e884c787538fbbb8cb1e757106
[platform/upstream/gcc48.git] / libstdc++-v3 / testsuite / 27_io / basic_istream / ignore / wchar_t / 3.cc
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 // @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   bool test __attribute__((unused)) = true;
33
34   const char filename[] ="istream_unformatted-1.txt";
35   ios_base::iostate state1, state2;
36
37   wifstream ifstrm;
38   ifstrm.open(filename);  
39
40   state1 = ifstrm.rdstate();
41   VERIFY( state1 == ios_base::goodbit );
42   VERIFY( ifstrm.peek() == L'1' );
43   state2 = ifstrm.rdstate();
44   VERIFY( state1 == state2 );
45
46   state1 = ifstrm.rdstate();
47   ifstrm.ignore(1);
48   VERIFY( ifstrm.gcount() == 1 );
49   state2 = ifstrm.rdstate();
50   VERIFY( state1 == state2 );
51   VERIFY( ifstrm.peek() == L'2' );
52
53   state1 = ifstrm.rdstate();
54   ifstrm.ignore(10);
55   VERIFY( ifstrm.gcount() == 10 );
56   state2 = ifstrm.rdstate();
57   VERIFY( state1 == state2 );
58   VERIFY( ifstrm.peek() == L'1' );
59
60   state1 = ifstrm.rdstate();
61   ifstrm.ignore(100);
62   VERIFY( ifstrm.gcount() == 100 );
63   state2 = ifstrm.rdstate();
64   VERIFY( state1 == state2 );
65   VERIFY( ifstrm.peek() == L'2' );
66   
67   state1 = ifstrm.rdstate();
68   ifstrm.ignore(1000);
69   VERIFY( ifstrm.gcount() == 1000 );
70   state2 = ifstrm.rdstate();
71   VERIFY( state1 == state2 );
72   VERIFY( ifstrm.peek() == L'1' );
73   
74   state1 = ifstrm.rdstate();
75   ifstrm.ignore(10000);
76   VERIFY( ifstrm.gcount() == 10000 );
77   state2 = ifstrm.rdstate();
78   VERIFY( state1 == state2 );
79   VERIFY( ifstrm.peek() == L'2' );
80
81   state1 = ifstrm.rdstate();
82   ifstrm.ignore(numeric_limits<streamsize>::max());
83   VERIFY( ifstrm.gcount() == 5389 );
84   state2 = ifstrm.rdstate();
85   VERIFY( state1 != state2 );
86   VERIFY( state2 == ios_base::eofbit );
87 }
88
89 int 
90 main()
91 {
92   test01();
93   return 0;
94 }