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