1 // Copyright (C) 2006-2020 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 23 struct 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 test01()35void test01() 36 { 37 pubbuf buf; 38 39 VERIFY( buf.overflow(L'x') == L'x' ); 40 VERIFY( buf.pptr() - buf.pbase() == 1 ); 41 42 // not required but good for efficiency 43 // NB: we are implementing DR 169 and DR 432 44 const int write_positions = buf.epptr() - buf.pbase(); 45 VERIFY( write_positions > 1 ); 46 47 // 27.7.1.3, p8: 48 VERIFY( buf.egptr() - buf.eback() == 1 ); 49 } 50 main()51int main() 52 { 53 test01(); 54 return 0; 55 } 56