1// 2003-05-03 Petur Runolfsson <peturr02@ru.is> 2 3// Copyright (C) 2003 Free Software Foundation, Inc. 4// 5// This file is part of the GNU ISO C++ Library. This library is free 6// software; you can redistribute it and/or modify it under the 7// terms of the GNU General Public License as published by the 8// Free Software Foundation; either version 2, or (at your option) 9// any later version. 10 11// This library is distributed in the hope that it will be useful, 12// but WITHOUT ANY WARRANTY; without even the implied warranty of 13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14// GNU General Public License for more details. 15 16// You should have received a copy of the GNU General Public License along 17// with this library; see the file COPYING. If not, write to the Free 18// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 19// USA. 20 21// 27.8.1.4 Overridden virtual functions 22 23#include <fstream> 24#include <string> 25#include <testsuite_hooks.h> 26 27class MyTraits : public std::char_traits<char> 28{ 29}; 30 31// libstdc++/10096 32void test01() 33{ 34 using namespace std; 35 36 const char* name = "filebuf_virtuals-1.txt"; 37 38 string str; 39 filebuf fb1; 40 fb1.open(name, ios_base::in); 41 42 filebuf::int_type c1; 43 while ((c1 = fb1.sbumpc()) != filebuf::traits_type::eof()) 44 str.push_back(filebuf::traits_type::to_char_type(c1)); 45 fb1.close(); 46 47 basic_filebuf<char, MyTraits> fb; 48 VERIFY( fb.sgetc() == MyTraits::eof() ); 49 50 fb.open(name, ios_base::in); 51 VERIFY( fb.is_open() ); 52 53 for (string::iterator i = str.begin(); i != str.end(); ++i) 54 { 55 MyTraits::int_type c2 = fb.sbumpc(); 56 VERIFY( c2 != MyTraits::eof() ); 57 VERIFY( c2 == MyTraits::to_int_type(*i) ); 58 } 59 60 VERIFY( fb.sgetc() == MyTraits::eof() ); 61 fb.close(); 62 VERIFY( !fb.is_open() ); 63 VERIFY( fb.sgetc() == MyTraits::eof() ); 64} 65 66int main() 67{ 68 test01(); 69 return 0; 70} 71