OSDN Git Service

* testsuite/lib/libstdc++.exp (check_v3_target_fileio,
[pf3gnuchains/gcc-fork.git] / libstdc++-v3 / testsuite / 27_io / basic_filebuf / in_avail / char / 9701-3.cc
1 // Copyright (C) 2003 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 2, 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 COPYING.  If not, write to the Free
16 // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
17 // USA.
18
19 // 27.5.2.2.3 Get area
20
21 // { dg-require-fileio "" }
22
23 #include <fstream>
24 #include <testsuite_hooks.h>
25
26 class Derived_fbuf : public std::filebuf
27 {
28 public:
29   const char_type* pub_egptr() const
30   { return egptr(); }
31
32   const char_type* pub_gptr() const
33   { return gptr(); }
34 };
35
36 // libstdc++/9701 (in_avail)
37 void test01()
38 {
39   using namespace std;
40   bool test __attribute__((unused)) = true;
41   const char* name = "tmp_file1";
42
43   Derived_fbuf df2;
44   df2.open(name, ios_base::in | ios_base::out | ios_base::trunc);
45
46   df2.sputn("Comomoc", 7);
47
48   df2.pubseekoff(0, ios_base::beg);
49   df2.sbumpc();
50   df2.sputbackc('t');
51
52   VERIFY( df2.pub_gptr() < df2.pub_egptr() );
53   VERIFY( df2.in_avail() == df2.pub_egptr() - df2.pub_gptr() );
54 }
55
56 int
57 main()
58 {
59   test01();
60   return 0;
61 }