1// Copyright (C) 2006-2015 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 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.8.1.4 Overridden virtual functions 19 20#include <sstream> 21#include <testsuite_hooks.h> 22 23struct pubbuf 24: std::wstringbuf 25{ 26 using std::wstringbuf::eback; 27 using std::wstringbuf::egptr; 28 using std::wstringbuf::pbase; 29 using std::wstringbuf::pptr; 30 using std::wstringbuf::epptr; 31 using std::wstringbuf::overflow; 32}; 33 34// libstdc++/26250 35void test01() 36{ 37 bool test __attribute__((unused)) = true; 38 39 pubbuf buf; 40 41 VERIFY( buf.overflow(L'x') == L'x' ); 42 VERIFY( buf.pptr() - buf.pbase() == 1 ); 43 44 // not required but good for efficiency 45 // NB: we are implementing DR 169 and DR 432 46 const int write_positions = buf.epptr() - buf.pbase(); 47 VERIFY( write_positions > 1 ); 48 49 // 27.7.1.3, p8: 50 VERIFY( buf.egptr() - buf.eback() == 1 ); 51} 52 53int main() 54{ 55 test01(); 56 return 0; 57} 58