72 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// <string>10 11// template<class charT, class traits, class Allocator>12// basic_ostream<charT, traits>&13// operator<<(basic_ostream<charT, traits>& os,14// const basic_string<charT,traits,Allocator>& str);15 16#include <string>17#include <sstream>18#include <cassert>19 20#include "test_macros.h"21#include "min_allocator.h"22 23template <template <class> class Alloc>24void test() {25 using S = std::basic_string<char, std::char_traits<char>, Alloc<char> >;26 using OS = std::basic_ostringstream<char, std::char_traits<char>, Alloc<char> >;27 {28 OS out;29 S s("some text");30 out << s;31 assert(out.good());32 assert(s == out.str());33 }34 {35 OS out;36 S s("some text");37 out.width(12);38 out << s;39 assert(out.good());40 assert(" " + s == out.str());41 }42#ifndef TEST_HAS_NO_WIDE_CHARACTERS43 using WS = std::basic_string<wchar_t, std::char_traits<wchar_t>, Alloc<wchar_t> >;44 using WOS = std::basic_ostringstream<wchar_t, std::char_traits<wchar_t>, Alloc<wchar_t> >;45 {46 WOS out;47 WS s(L"some text");48 out << s;49 assert(out.good());50 assert(s == out.str());51 }52 {53 WOS out;54 WS s(L"some text");55 out.width(12);56 out << s;57 assert(out.good());58 assert(L" " + s == out.str());59 }60#endif61}62 63int main(int, char**) {64 test<std::allocator>();65 66#if TEST_STD_VER >= 1167 test<min_allocator>();68#endif69 70 return 0;71}72