1// { dg-require-namedlocale "en_US" } 2// { dg-require-namedlocale "fr_FR" } 3 4// 2004-01-11 Petur Runolfsson <peturr02@ru.is> 5 6// Copyright (C) 2004-2015 Free Software Foundation, Inc. 7// 8// This file is part of the GNU ISO C++ Library. This library is free 9// software; you can redistribute it and/or modify it under the 10// terms of the GNU General Public License as published by the 11// Free Software Foundation; either version 3, or (at your option) 12// any later version. 13 14// This library is distributed in the hope that it will be useful, 15// but WITHOUT ANY WARRANTY; without even the implied warranty of 16// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17// GNU General Public License for more details. 18 19// You should have received a copy of the GNU General Public License along 20// with this library; see the file COPYING3. If not see 21// <http://www.gnu.org/licenses/>. 22 23// 27.8.1.4 Overridden virtual functions 24 25#include <fstream> 26#include <locale> 27#include <testsuite_hooks.h> 28 29// libstdc++/13582 30void test01() 31{ 32 bool test __attribute__((unused)) = true; 33 using namespace std; 34 35 locale loc_en(locale("en_US")); 36 locale loc_fr(locale("fr_FR")); 37 38 const char* name = "tmp_13582-3.tst"; 39 40 { 41 filebuf fbout; 42 fbout.open(name, ios_base::out); 43 fbout.sputn("AbCdE", 5); 44 fbout.close(); 45 } 46 47 { 48 wfilebuf fbin; 49 fbin.open(name, ios_base::in); 50 wfilebuf::int_type n = fbin.sbumpc(); 51 VERIFY( n == L'A' ); 52 fbin.pubimbue(loc_en); 53 fbin.pubseekoff(0, ios_base::cur); 54 n = fbin.sbumpc(); 55 VERIFY( n == L'b' ); 56 fbin.pubimbue(loc_fr); 57 n = fbin.sbumpc(); 58 VERIFY( n == L'C' ); 59 n = fbin.sbumpc(); 60 VERIFY( n == L'd' ); 61 fbin.pubseekoff(0, ios_base::cur); 62 n = fbin.sbumpc(); 63 VERIFY( n == L'E' ); 64 n = fbin.sbumpc(); 65 VERIFY( n == wfilebuf::traits_type::eof() ); 66 fbin.close(); 67 } 68} 69 70int main() 71{ 72 test01(); 73 return 0; 74} 75