setp.pass.cpp revision bc8d3f97eb5c958007f2713238472e0c1c8fe02c
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 setp(char_type* pbeg, char_type* pend);
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 setp(CharT* pbeg, CharT* pend)
29    {
30        base::setp(pbeg, pend);
31        assert(base::pbase() == pbeg);
32        assert(base::pptr() == pbeg);
33        assert(base::epptr() == pend);
34    }
35};
36
37int main()
38{
39    {
40        test<char> t;
41        char in[] = "ABC";
42        t.setp(in, in+sizeof(in)/sizeof(in[0]));
43    }
44    {
45        test<wchar_t> t;
46        wchar_t in[] = L"ABC";
47        t.setp(in, in+sizeof(in)/sizeof(in[0]));
48    }
49}
50