1 //===----------------------------------------------------------------------===//
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-exception
7 //===----------------------------------------------------------------------===//
11 // template <class charT, class traits = char_traits<charT> >
12 // class basic_streambuf;
14 // int_type sputc(char_type c);
19 #include "test_macros.h"
21 int overflow_called
= 0;
24 : public std::basic_streambuf
<char>
26 typedef std::basic_streambuf
<char> base
;
30 void setg(char* gbeg
, char* gnext
, char* gend
)
32 base::setg(gbeg
, gnext
, gend
);
34 void setp(char* pbeg
, char* pend
)
36 base::setp(pbeg
, pend
);
40 int_type
overflow(int_type
= traits_type::eof())
51 assert(overflow_called
== 0);
52 assert(t
.sputc('A') == 'a');
53 assert(overflow_called
== 1);
55 t
.setp(out
, out
+sizeof(out
));
56 assert(t
.sputc('A') == 'A');
57 assert(overflow_called
== 1);
58 assert(out
[0] == 'A');
59 assert(t
.sputc('B') == 'B');
60 assert(overflow_called
== 1);
61 assert(out
[0] == 'A');
62 assert(out
[1] == 'B');