65 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// <streambuf>10 11// template <class charT, class traits = char_traits<charT> >12// class basic_streambuf;13 14// void gbump(int n);15 16#include <streambuf>17#include <cassert>18 19#include "test_macros.h"20 21template <class CharT>22struct test23 : public std::basic_streambuf<CharT>24{25 typedef std::basic_streambuf<CharT> base;26 27 test() {}28 29 void setg(CharT* gbeg, CharT* gnext, CharT* gend)30 {31 base::setg(gbeg, gnext, gend);32 }33 34 void gbump(int n)35 {36 CharT* gbeg = base::eback();37 CharT* gnext = base::gptr();38 CharT* gend = base::egptr();39 base::gbump(n);40 assert(base::eback() == gbeg);41 assert(base::gptr() == gnext+n);42 assert(base::egptr() == gend);43 }44};45 46int main(int, char**)47{48 {49 test<char> t;50 char in[] = "ABCDE";51 t.setg(in, in+1, in+sizeof(in)/sizeof(in[0]));52 t.gbump(2);53 }54#ifndef TEST_HAS_NO_WIDE_CHARACTERS55 {56 test<wchar_t> t;57 wchar_t in[] = L"ABCDE";58 t.setg(in, in+1, in+sizeof(in)/sizeof(in[0]));59 t.gbump(3);60 }61#endif62 63 return 0;64}65