1b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner//===----------------------------------------------------------------------===// 2b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// 3b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// The LLVM Compiler Infrastructure 4b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// 5b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// This file is dual licensed under the MIT and the University of Illinois Open 6b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// Source Licenses. See LICENSE.TXT for details. 7b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// 8b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner//===----------------------------------------------------------------------===// 9b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 10b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// <string> 11b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 12b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// basic_string<charT,traits,Allocator>& operator+=(charT c); 13b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 14b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#include <string> 15b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#include <cassert> 16b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 17ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner#include "../../min_allocator.h" 18ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner 19b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnertemplate <class S> 20b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnervoid 21b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnertest(S s, typename S::value_type str, S expected) 22b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner{ 23b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner s += str; 24b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(s.__invariants()); 25b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(s == expected); 26b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner} 27b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 28b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerint main() 29b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner{ 30ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner { 31b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::string S; 32b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner test(S(), 'a', S("a")); 33b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner test(S("12345"), 'a', S("12345a")); 34b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner test(S("1234567890"), 'a', S("1234567890a")); 35b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner test(S("12345678901234567890"), 'a', S("12345678901234567890a")); 36ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner } 37ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner#if __cplusplus >= 201103L 38ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner { 39ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S; 40ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner test(S(), 'a', S("a")); 41ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner test(S("12345"), 'a', S("12345a")); 42ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner test(S("1234567890"), 'a', S("1234567890a")); 43ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner test(S("12345678901234567890"), 'a', S("12345678901234567890a")); 44ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner } 45ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner#endif 46b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner} 47