brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · 45a8cdf Raw
102 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// REQUIRES: locale.en_US.UTF-810 11// <streambuf>12 13// template <class charT, class traits = char_traits<charT> >14// class basic_streambuf;15 16// basic_streambuf& operator=(const basic_streambuf& rhs);17 18#include <streambuf>19#include <cassert>20 21#include "test_macros.h"22#include "platform_support.h" // locale name macros23 24template <class CharT>25struct test26    : public std::basic_streambuf<CharT>27{28    typedef std::basic_streambuf<CharT> base;29    test() {}30 31    test& operator=(const test& t)32    {33        base::operator=(t);34        assert(this->eback() == t.eback());35        assert(this->gptr()  == t.gptr());36        assert(this->egptr() == t.egptr());37        assert(this->pbase() == t.pbase());38        assert(this->pptr()  == t.pptr());39        assert(this->epptr() == t.epptr());40        assert(this->getloc() == t.getloc());41        return *this;42    }43 44    void setg(CharT* gbeg, CharT* gnext, CharT* gend)45    {46        base::setg(gbeg, gnext, gend);47    }48    void setp(CharT* pbeg, CharT* pend)49    {50        base::setp(pbeg, pend);51    }52};53 54int main(int, char**)55{56    {57        test<char> t;58        test<char> t2;59        t2 = t;60    }61    {62        char g[3];63        char p[3];64        test<char> t;65        t.setg(&g[0], &g[1], &g[2]);66        t.setp(&p[0], &p[2]);67        test<char> t2;68        t2 = t;69    }70#ifndef TEST_HAS_NO_WIDE_CHARACTERS71    {72        test<wchar_t> t;73        test<wchar_t> t2;74        t2 = t;75    }76    {77        wchar_t g[3];78        wchar_t p[3];79        test<wchar_t> t;80        t.setg(&g[0], &g[1], &g[2]);81        t.setp(&p[0], &p[2]);82        test<wchar_t> t2;83        t2 = t;84    }85#endif86    std::locale::global(std::locale(LOCALE_en_US_UTF_8));87    {88        test<char> t;89        test<char> t2;90        t2 = t;91    }92#ifndef TEST_HAS_NO_WIDE_CHARACTERS93    {94        test<wchar_t> t;95        test<wchar_t> t2;96        t2 = t;97    }98#endif99 100  return 0;101}102