1 //===----------------------------------------------------------------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
12 // basic_string<charT,traits,Allocator>&
13 // assign(basic_string_view<charT,traits> sv);
16 #include <string_view>
19 #include "test_macros.h"
20 #include "min_allocator.h"
21 #include "test_allocator.h"
23 template <class S, class SV>
25 test(S s, SV sv, S expected)
28 LIBCPP_ASSERT(s.__invariants());
29 assert(s == expected);
32 template <class S, class SV>
34 testAlloc(S s, SV sv, const typename S::allocator_type& a)
37 LIBCPP_ASSERT(s.__invariants());
39 assert(s.get_allocator() == a);
45 typedef std::string S;
46 typedef std::string_view SV;
48 test(S(), SV("12345"), S("12345"));
49 test(S(), SV("1234567890"), S("1234567890"));
50 test(S(), SV("12345678901234567890"), S("12345678901234567890"));
52 test(S("12345"), SV(), S());
53 test(S("12345"), SV("12345"), S("12345"));
54 test(S("12345"), SV("1234567890"), S("1234567890"));
55 test(S("12345"), SV("12345678901234567890"), S("12345678901234567890"));
57 test(S("1234567890"), SV(), S());
58 test(S("1234567890"), SV("12345"), S("12345"));
59 test(S("1234567890"), SV("1234567890"), S("1234567890"));
60 test(S("1234567890"), SV("12345678901234567890"), S("12345678901234567890"));
62 test(S("12345678901234567890"), SV(), S());
63 test(S("12345678901234567890"), SV("12345"), S("12345"));
64 test(S("12345678901234567890"), SV("1234567890"), S("1234567890"));
65 test(S("12345678901234567890"), SV("12345678901234567890"),
66 S("12345678901234567890"));
68 testAlloc(S(), SV(), std::allocator<char>());
69 testAlloc(S(), SV("12345"), std::allocator<char>());
70 testAlloc(S(), SV("1234567890"), std::allocator<char>());
71 testAlloc(S(), SV("12345678901234567890"), std::allocator<char>());
74 #if TEST_STD_VER >= 11
76 typedef std::basic_string <char, std::char_traits<char>, min_allocator<char>> S;
77 typedef std::basic_string_view<char, std::char_traits<char> > SV;
79 test(S(), SV("12345"), S("12345"));
80 test(S(), SV("1234567890"), S("1234567890"));
81 test(S(), SV("12345678901234567890"), S("12345678901234567890"));
83 test(S("12345"), SV(), S());
84 test(S("12345"), SV("12345"), S("12345"));
85 test(S("12345"), SV("1234567890"), S("1234567890"));
86 test(S("12345"), SV("12345678901234567890"), S("12345678901234567890"));
88 test(S("1234567890"), SV(), S());
89 test(S("1234567890"), SV("12345"), S("12345"));
90 test(S("1234567890"), SV("1234567890"), S("1234567890"));
91 test(S("1234567890"), SV("12345678901234567890"), S("12345678901234567890"));
93 test(S("12345678901234567890"), SV(), S());
94 test(S("12345678901234567890"), SV("12345"), S("12345"));
95 test(S("12345678901234567890"), SV("1234567890"), S("1234567890"));
96 test(S("12345678901234567890"), SV("12345678901234567890"),
97 S("12345678901234567890"));
99 testAlloc(S(), SV(), min_allocator<char>());
100 testAlloc(S(), SV("12345"), min_allocator<char>());
101 testAlloc(S(), SV("1234567890"), min_allocator<char>());
102 testAlloc(S(), SV("12345678901234567890"), min_allocator<char>());