setg.pass.cpp revision f5256e16dfc425c1d466f6308d4026d529ce9e0b
1//===----------------------------------------------------------------------===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10// <streambuf>
11
12// template <class charT, class traits = char_traits<charT> >
13// class basic_streambuf;
14
15// void setg(char_type* gbeg, char_type* gnext, char_type* gend);
16
17#include <streambuf>
18#include <cassert>
19
20template <class CharT>
21struct test
22    : public std::basic_streambuf<CharT>
23{
24    typedef std::basic_streambuf<CharT> base;
25
26    test() {}
27
28    void setg(CharT* gbeg, CharT* gnext, CharT* gend)
29    {
30        base::setg(gbeg, gnext, gend);
31        assert(base::eback() == gbeg);
32        assert(base::gptr() == gnext);
33        assert(base::egptr() == gend);
34    }
35};
36
37int main()
38{
39    {
40        test<char> t;
41        char in[] = "ABC";
42        t.setg(in, in+1, in+sizeof(in)/sizeof(in[0]));
43    }
44    {
45        test<wchar_t> t;
46        wchar_t in[] = L"ABC";
47        t.setg(in, in+1, in+sizeof(in)/sizeof(in[0]));
48    }
49}
50