brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.6 KiB · b90c4c0 Raw
111 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// void swap(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    void swap(test& t)32    {33        test old_this(*this);34        test old_that(t);35        base::swap(t);36        assert(this->eback() == old_that.eback());37        assert(this->gptr()  == old_that.gptr());38        assert(this->egptr() == old_that.egptr());39        assert(this->pbase() == old_that.pbase());40        assert(this->pptr()  == old_that.pptr());41        assert(this->epptr() == old_that.epptr());42        assert(this->getloc() == old_that.getloc());43 44        assert(t.eback() == old_this.eback());45        assert(t.gptr()  == old_this.gptr());46        assert(t.egptr() == old_this.egptr());47        assert(t.pbase() == old_this.pbase());48        assert(t.pptr()  == old_this.pptr());49        assert(t.epptr() == old_this.epptr());50        assert(t.getloc() == old_this.getloc());51    }52 53    void setg(CharT* gbeg, CharT* gnext, CharT* gend)54    {55        base::setg(gbeg, gnext, gend);56    }57    void setp(CharT* pbeg, CharT* pend)58    {59        base::setp(pbeg, pend);60    }61};62 63int main(int, char**)64{65    {66        test<char> t;67        test<char> t2;68        t2.swap(t);69    }70    {71        char g[3];72        char p[3];73        test<char> t;74        t.setg(&g[0], &g[1], &g[2]);75        t.setp(&p[0], &p[2]);76        test<char> t2;77        t2.swap(t);78    }79#ifndef TEST_HAS_NO_WIDE_CHARACTERS80    {81        test<wchar_t> t;82        test<wchar_t> t2;83        t2.swap(t);84    }85    {86        wchar_t g[3];87        wchar_t p[3];88        test<wchar_t> t;89        t.setg(&g[0], &g[1], &g[2]);90        t.setp(&p[0], &p[2]);91        test<wchar_t> t2;92        t2.swap(t);93    }94#endif95    std::locale::global(std::locale(LOCALE_en_US_UTF_8));96    {97        test<char> t;98        test<char> t2;99        t2.swap(t);100    }101#ifndef TEST_HAS_NO_WIDE_CHARACTERS102    {103        test<wchar_t> t;104        test<wchar_t> t2;105        t2.swap(t);106    }107#endif108 109  return 0;110}111