1 //===----------------------------------------------------------------------===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 // <string>
11
12 // basic_string<charT,traits,Allocator>&
13 // operator=(const basic_string<charT,traits,Allocator>& str);
14
15 #include <string>
16 #include <cassert>
17
18 #include "min_allocator.h"
19
20 template <class S>
21 void
test(S s1,const S & s2)22 test(S s1, const S& s2)
23 {
24 s1 = s2;
25 assert(s1.__invariants());
26 assert(s1 == s2);
27 assert(s1.capacity() >= s1.size());
28 }
29
main()30 int main()
31 {
32 {
33 typedef std::string S;
34 test(S(), S());
35 test(S("1"), S());
36 test(S(), S("1"));
37 test(S("1"), S("2"));
38 test(S("1"), S("2"));
39
40 test(S(),
41 S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"));
42 test(S("123456789"),
43 S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"));
44 test(S("1234567890123456789012345678901234567890123456789012345678901234567890"),
45 S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"));
46 test(S("1234567890123456789012345678901234567890123456789012345678901234567890"
47 "1234567890123456789012345678901234567890123456789012345678901234567890"),
48 S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"));
49 }
50 #if __cplusplus >= 201103L
51 {
52 typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
53 test(S(), S());
54 test(S("1"), S());
55 test(S(), S("1"));
56 test(S("1"), S("2"));
57 test(S("1"), S("2"));
58
59 test(S(),
60 S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"));
61 test(S("123456789"),
62 S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"));
63 test(S("1234567890123456789012345678901234567890123456789012345678901234567890"),
64 S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"));
65 test(S("1234567890123456789012345678901234567890123456789012345678901234567890"
66 "1234567890123456789012345678901234567890123456789012345678901234567890"),
67 S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"));
68 }
69 #endif
70 }
71