]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/beast/test/beast/core/static_string.cpp
2 // Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com)
4 // Distributed under the Boost Software License, Version 1.0. (See accompanying
5 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7 // Official repository: https://github.com/boostorg/beast
10 // Test that header file is self-contained.
11 #include <boost/beast/core/static_string.hpp>
13 #include <boost/beast/_experimental/unit_test/suite.hpp>
18 class static_string_test
: public beast::unit_test::suite
26 BEAST_EXPECT(s
.empty());
27 BEAST_EXPECT(s
.size() == 0);
28 BEAST_EXPECT(s
== "");
29 BEAST_EXPECT(*s
.end() == 0);
32 static_string
<4> s1(3, 'x');
33 BEAST_EXPECT(! s1
.empty());
34 BEAST_EXPECT(s1
.size() == 3);
35 BEAST_EXPECT(s1
== "xxx");
36 BEAST_EXPECT(*s1
.end() == 0);
39 static_string
<2> s2(3, 'x');
40 fail("", __FILE__
, __LINE__
);
42 catch(std::length_error
const&)
48 static_string
<5> s1("12345");
49 BEAST_EXPECT(*s1
.end() == 0);
50 static_string
<3> s2(s1
, 2);
51 BEAST_EXPECT(s2
== "345");
52 BEAST_EXPECT(*s2
.end() == 0);
53 static_string
<0> s3(s1
, 5);
54 BEAST_EXPECT(s3
.empty());
55 BEAST_EXPECT(s3
.front() == 0);
56 BEAST_EXPECT(*s3
.end() == 0);
59 static_string
<5> s1("12345");
60 static_string
<2> s2(s1
, 1, 2);
61 BEAST_EXPECT(s2
== "23");
62 BEAST_EXPECT(*s2
.end() == 0);
63 static_string
<0> s3(s1
, 5, 1);
64 BEAST_EXPECT(s3
.empty());
65 BEAST_EXPECT(s3
.front() == 0);
66 BEAST_EXPECT(*s3
.end() == 0);
69 static_string
<5> s4(s1
, 6);
70 fail("", __FILE__
, __LINE__
);
72 catch(std::out_of_range
const&)
78 static_string
<5> s1("UVXYZ", 3);
79 BEAST_EXPECT(s1
== "UVX");
80 BEAST_EXPECT(*s1
.end() == 0);
81 static_string
<5> s2("X\0""Y\0""Z", 3);
82 BEAST_EXPECT(std::memcmp(
83 s2
.data(), "X\0""Y", 3) == 0);
84 BEAST_EXPECT(*s2
.end() == 0);
87 static_string
<5> s1("12345");
89 s1
.begin() + 1, s1
.begin() + 3);
90 BEAST_EXPECT(s2
== "23");
91 BEAST_EXPECT(*s2
.end() == 0);
94 static_string
<5> s1("12345");
95 static_string
<5> s2(s1
);
96 BEAST_EXPECT(s2
== "12345");
97 BEAST_EXPECT(*s2
.end() == 0);
98 static_string
<6> s3(s1
);
99 BEAST_EXPECT(s3
== "12345");
100 BEAST_EXPECT(*s3
.end() == 0);
103 static_string
<4> s4(s1
);
104 fail("", __FILE__
, __LINE__
);
106 catch(std::length_error
const&)
112 static_string
<3> s1({'1', '2', '3'});
113 BEAST_EXPECT(s1
== "123");
114 BEAST_EXPECT(*s1
.end() == 0);
116 static_string
<0>({}) == static_string
<0>());
119 static_string
<2> s2({'1', '2', '3'});
120 fail("", __FILE__
, __LINE__
);
122 catch(std::length_error
const&)
130 BEAST_EXPECT(s1
== "123");
131 BEAST_EXPECT(*s1
.end() == 0);
136 fail("", __FILE__
, __LINE__
);
138 catch(std::length_error
const&)
145 std::string("12345"), 2, 2);
146 BEAST_EXPECT(s1
== "34");
147 BEAST_EXPECT(*s1
.end() == 0);
151 std::string("12345"), 1, 3);
152 fail("", __FILE__
, __LINE__
);
154 catch(std::length_error
const&)
165 static_string
<3> s1("123");
168 BEAST_EXPECT(s2
== "123");
169 BEAST_EXPECT(*s2
.end() == 0);
172 static_string
<3> s1("123");
175 BEAST_EXPECT(s2
== "123");
176 BEAST_EXPECT(*s2
.end() == 0);
181 fail("", __FILE__
, __LINE__
);
183 catch(std::length_error
const&)
191 BEAST_EXPECT(s1
== "123");
192 BEAST_EXPECT(*s1
.end() == 0);
197 fail("", __FILE__
, __LINE__
);
199 catch(std::length_error
const&)
207 BEAST_EXPECT(s1
== "x");
208 BEAST_EXPECT(*s1
.end() == 0);
213 fail("", __FILE__
, __LINE__
);
215 catch(std::length_error
const&)
222 s1
= {'1', '2', '3'};
223 BEAST_EXPECT(s1
== "123");
224 BEAST_EXPECT(*s1
.end() == 0);
228 s2
= {'1', '2', '3'};
229 fail("", __FILE__
, __LINE__
);
231 catch(std::length_error
const&)
238 s1
= string_view("123");
239 BEAST_EXPECT(s1
== "123");
240 BEAST_EXPECT(*s1
.end() == 0);
244 s2
= string_view("123");
245 fail("", __FILE__
, __LINE__
);
247 catch(std::length_error
const&)
256 BEAST_EXPECT(s1
== "xxx");
257 BEAST_EXPECT(*s1
.end() == 0);
262 fail("", __FILE__
, __LINE__
);
264 catch(std::length_error
const&)
270 static_string
<5> s1("12345");
271 BEAST_EXPECT(*s1
.end() == 0);
274 BEAST_EXPECT(s2
== "12345");
275 BEAST_EXPECT(*s2
.end() == 0);
278 static_string
<5> s1("12345");
279 BEAST_EXPECT(*s1
.end() == 0);
282 BEAST_EXPECT(s2
== "12345");
283 BEAST_EXPECT(*s2
.end() == 0);
288 fail("", __FILE__
, __LINE__
);
290 catch(std::length_error
const&)
296 static_string
<5> s1("12345");
299 BEAST_EXPECT(s2
== "2345");
300 BEAST_EXPECT(*s2
.end() == 0);
302 BEAST_EXPECT(s2
== "23");
303 BEAST_EXPECT(*s2
.end() == 0);
304 s2
.assign(s1
, 1, 100);
305 BEAST_EXPECT(s2
== "2345");
306 BEAST_EXPECT(*s2
.end() == 0);
310 fail("", __FILE__
, __LINE__
);
312 catch(std::out_of_range
const&)
320 fail("", __FILE__
, __LINE__
);
322 catch(std::length_error
const&)
330 BEAST_EXPECT(s1
== "12");
331 BEAST_EXPECT(*s1
.end() == 0);
333 BEAST_EXPECT(s1
== "12345");
334 BEAST_EXPECT(*s1
.end() == 0);
338 s1
.assign("12345", 3);
339 BEAST_EXPECT(s1
== "123");
340 BEAST_EXPECT(*s1
.end() == 0);
343 static_string
<5> s1("12345");
345 s2
.assign(s1
.begin(), s1
.begin() + 2);
346 BEAST_EXPECT(s2
== "12");
347 BEAST_EXPECT(*s2
.end() == 0);
350 s2
.assign(s1
.begin(), s1
.end());
351 fail("", __FILE__
, __LINE__
);
353 catch(std::length_error
const&)
360 s1
.assign({'1', '2', '3'});
361 BEAST_EXPECT(s1
== "123");
362 BEAST_EXPECT(*s1
.end() == 0);
366 s2
.assign({'1', '2', '3'});
367 fail("", __FILE__
, __LINE__
);
369 catch(std::length_error
const&)
376 s1
.assign(string_view("123"));
377 BEAST_EXPECT(s1
== "123");
378 BEAST_EXPECT(*s1
.end() == 0);
379 s1
.assign(string_view("12345"));
380 BEAST_EXPECT(s1
== "12345");
381 BEAST_EXPECT(*s1
.end() == 0);
384 s1
.assign(string_view("1234567"));
385 fail("", __FILE__
, __LINE__
);
387 catch(std::length_error
const&)
394 s1
.assign(std::string("12345"), 2, 2);
395 BEAST_EXPECT(s1
== "34");
396 BEAST_EXPECT(*s1
.end() == 0);
397 s1
.assign(std::string("12345"), 3);
398 BEAST_EXPECT(s1
== "45");
399 BEAST_EXPECT(*s1
.end() == 0);
404 std::string("12345"), 1, 3);
405 fail("", __FILE__
, __LINE__
);
407 catch(std::length_error
const&)
418 static_string
<5> s("12345");
419 BEAST_EXPECT(s
.at(1) == '2');
420 BEAST_EXPECT(s
.at(4) == '5');
423 BEAST_EXPECT(s
.at(5) == 0);
424 fail("", __FILE__
, __LINE__
);
426 catch(std::out_of_range
const&)
432 static_string
<5> const s("12345");
433 BEAST_EXPECT(s
.at(1) == '2');
434 BEAST_EXPECT(s
.at(4) == '5');
437 BEAST_EXPECT(s
.at(5) == 0);
438 fail("", __FILE__
, __LINE__
);
440 catch(std::out_of_range
const&)
446 static_string
<5> s("12345");
447 BEAST_EXPECT(s
[1] == '2');
448 BEAST_EXPECT(s
[4] == '5');
450 BEAST_EXPECT(s
== "1_345");
453 static_string
<5> const s("12345");
454 BEAST_EXPECT(s
[1] == '2');
455 BEAST_EXPECT(s
[4] == '5');
456 BEAST_EXPECT(s
[5] == 0);
459 static_string
<3> s("123");
460 BEAST_EXPECT(s
.front() == '1');
461 BEAST_EXPECT(s
.back() == '3');
463 BEAST_EXPECT(s
== "_23");
465 BEAST_EXPECT(s
== "_2_");
468 static_string
<3> const s("123");
469 BEAST_EXPECT(s
.front() == '1');
470 BEAST_EXPECT(s
.back() == '3');
473 static_string
<3> s("123");
474 BEAST_EXPECT(std::memcmp(
475 s
.data(), "123", 3) == 0);
478 static_string
<3> const s("123");
479 BEAST_EXPECT(std::memcmp(
480 s
.data(), "123", 3) == 0);
483 static_string
<3> s("123");
484 BEAST_EXPECT(std::memcmp(
485 s
.c_str(), "123\0", 4) == 0);
488 static_string
<3> s("123");
490 BEAST_EXPECT(static_string
<5>(sv
) == "123");
499 BEAST_EXPECT(std::distance(
500 s
.begin(), s
.end()) == 0);
501 BEAST_EXPECT(std::distance(
502 s
.rbegin(), s
.rend()) == 0);
504 BEAST_EXPECT(std::distance(
505 s
.begin(), s
.end()) == 3);
506 BEAST_EXPECT(std::distance(
507 s
.rbegin(), s
.rend()) == 3);
510 static_string
<3> const s("123");
511 BEAST_EXPECT(std::distance(
512 s
.begin(), s
.end()) == 3);
513 BEAST_EXPECT(std::distance(
514 s
.cbegin(), s
.cend()) == 3);
515 BEAST_EXPECT(std::distance(
516 s
.rbegin(), s
.rend()) == 3);
517 BEAST_EXPECT(std::distance(
518 s
.crbegin(), s
.crend()) == 3);
526 BEAST_EXPECT(s
.empty());
527 BEAST_EXPECT(s
.size() == 0);
528 BEAST_EXPECT(s
.length() == 0);
529 BEAST_EXPECT(s
.max_size() == 3);
530 BEAST_EXPECT(s
.capacity() == 3);
532 BEAST_EXPECT(! s
.empty());
533 BEAST_EXPECT(s
.size() == 3);
534 BEAST_EXPECT(s
.length() == 3);
540 fail("", __FILE__
, __LINE__
);
542 catch(std::length_error
const&)
547 BEAST_EXPECT(! s
.empty());
548 BEAST_EXPECT(s
.size() == 3);
549 BEAST_EXPECT(s
.length() == 3);
550 BEAST_EXPECT(*s
.end() == 0);
561 static_string
<3> s("123");
563 BEAST_EXPECT(s
.empty());
564 BEAST_EXPECT(*s
.end() == 0);
572 // Using 7 as the size causes a miscompile in MSVC14.2 x64 Release
573 static_string
<8> s1("12345");
574 s1
.insert(2, 2, '_');
575 BEAST_EXPECT(s1
== "12__345");
576 BEAST_EXPECT(*s1
.end() == 0);
579 static_string
<6> s2("12345");
580 s2
.insert(2, 2, '_');
581 fail("", __FILE__
, __LINE__
);
583 catch(std::length_error
const&)
589 static_string
<6> s2("12345");
590 s2
.insert(6, 2, '_');
591 fail("", __FILE__
, __LINE__
);
593 catch(std::out_of_range
const&)
599 static_string
<7> s1("12345");
601 BEAST_EXPECT(s1
== "12__345");
602 BEAST_EXPECT(*s1
.end() == 0);
605 static_string
<6> s2("12345");
607 fail("", __FILE__
, __LINE__
);
609 catch(std::length_error
const&)
615 static_string
<6> s2("12345");
617 fail("", __FILE__
, __LINE__
);
619 catch(std::out_of_range
const&)
625 static_string
<7> s1("12345");
626 s1
.insert(2, "TUV", 2);
627 BEAST_EXPECT(s1
== "12TU345");
628 BEAST_EXPECT(*s1
.end() == 0);
631 static_string
<6> s2("12345");
632 s2
.insert(2, "TUV", 2);
633 fail("", __FILE__
, __LINE__
);
635 catch(std::length_error
const&)
641 static_string
<6> s2("12345");
642 s2
.insert(6, "TUV", 2);
643 fail("", __FILE__
, __LINE__
);
645 catch(std::out_of_range
const&)
651 static_string
<7> s1("12345");
652 s1
.insert(2, static_string
<3>("TU"));
653 BEAST_EXPECT(s1
== "12TU345");
654 BEAST_EXPECT(*s1
.end() == 0);
657 static_string
<6> s2("12345");
658 s2
.insert(2, static_string
<3>("TUV"));
659 fail("", __FILE__
, __LINE__
);
661 catch(std::length_error
const&)
667 static_string
<6> s2("12345");
668 s2
.insert(6, static_string
<3>("TUV"));
669 fail("", __FILE__
, __LINE__
);
671 catch(std::out_of_range
const&)
677 static_string
<7> s1("12345");
678 s1
.insert(2, static_string
<3>("TUV"), 1);
679 BEAST_EXPECT(s1
== "12UV345");
680 BEAST_EXPECT(*s1
.end() == 0);
682 s1
.insert(2, static_string
<3>("TUV"), 1, 1);
683 BEAST_EXPECT(s1
== "12U345");
684 BEAST_EXPECT(*s1
.end() == 0);
687 static_string
<6> s2("12345");
688 s2
.insert(2, static_string
<3>("TUV"), 1, 2);
689 fail("", __FILE__
, __LINE__
);
691 catch(std::length_error
const&)
697 static_string
<6> s2("12345");
698 s2
.insert(6, static_string
<3>("TUV"), 1, 2);
699 fail("", __FILE__
, __LINE__
);
701 catch(std::out_of_range
const&)
707 static_string
<4> s1("123");
708 s1
.insert(s1
.begin() + 1, '_');
709 BEAST_EXPECT(s1
== "1_23");
710 BEAST_EXPECT(*s1
.end() == 0);
713 static_string
<3> s2("123");
714 s2
.insert(s2
.begin() + 1, '_');
715 fail("", __FILE__
, __LINE__
);
717 catch(std::length_error
const&)
723 static_string
<4> s1("12");
724 s1
.insert(s1
.begin() + 1, 2, '_');
725 BEAST_EXPECT(s1
== "1__2");
726 BEAST_EXPECT(*s1
.end() == 0);
729 static_string
<4> s2("123");
730 s2
.insert(s2
.begin() + 1, 2, ' ');
731 fail("", __FILE__
, __LINE__
);
733 catch(std::length_error
const&)
739 static_string
<3> s1("123");
740 static_string
<5> s2("UV");
741 s2
.insert(s2
.begin() + 1, s1
.begin(), s1
.end());
742 BEAST_EXPECT(s2
== "U123V");
743 BEAST_EXPECT(*s2
.end() == 0);
746 static_string
<4> s3("UV");
747 s3
.insert(s3
.begin() + 1, s1
.begin(), s1
.end());
748 fail("", __FILE__
, __LINE__
);
750 catch(std::length_error
const&)
756 static_string
<5> s1("123");
757 s1
.insert(1, string_view("UV"));
758 BEAST_EXPECT(s1
== "1UV23");
759 BEAST_EXPECT(*s1
.end() == 0);
762 static_string
<4> s2("123");
763 s2
.insert(1, string_view("UV"));
764 fail("", __FILE__
, __LINE__
);
766 catch(std::length_error
const&)
772 static_string
<5> s2("123");
773 s2
.insert(5, string_view("UV"));
774 fail("", __FILE__
, __LINE__
);
776 catch(std::out_of_range
const&)
782 static_string
<5> s1("123");
783 s1
.insert(1, std::string("UV"));
784 BEAST_EXPECT(s1
== "1UV23");
785 BEAST_EXPECT(*s1
.end() == 0);
788 s1
.insert(1, std::string("UV"));
789 fail("", __FILE__
, __LINE__
);
791 catch(std::length_error
const&)
797 static_string
<6> s1("123");
798 s1
.insert(1, std::string("UVX"), 1);
799 BEAST_EXPECT(s1
== "1VX23");
800 BEAST_EXPECT(*s1
.end() == 0);
801 s1
.insert(4, std::string("PQR"), 1, 1);
802 BEAST_EXPECT(s1
== "1VX2Q3");
803 BEAST_EXPECT(*s1
.end() == 0);
806 s1
.insert(4, std::string("PQR"), 1, 1);
807 fail("", __FILE__
, __LINE__
);
809 catch(std::length_error
const&)
820 static_string
<9> s1("123456789");
821 BEAST_EXPECT(s1
.erase(1, 1) == "13456789");
822 BEAST_EXPECT(s1
== "13456789");
823 BEAST_EXPECT(*s1
.end() == 0);
824 BEAST_EXPECT(s1
.erase(5) == "13456");
825 BEAST_EXPECT(s1
== "13456");
826 BEAST_EXPECT(*s1
.end() == 0);
830 fail("", __FILE__
, __LINE__
);
832 catch(std::out_of_range
const&)
838 static_string
<9> s1("123456789");
839 BEAST_EXPECT(*s1
.erase(s1
.begin() + 5) == '7');
840 BEAST_EXPECT(s1
== "12345789");
841 BEAST_EXPECT(*s1
.end() == 0);
844 static_string
<9> s1("123456789");
845 BEAST_EXPECT(*s1
.erase(
846 s1
.begin() + 5, s1
.begin() + 7) == '8');
847 BEAST_EXPECT(s1
== "1234589");
848 BEAST_EXPECT(*s1
.end() == 0);
856 static_string
<3> s1("12");
858 BEAST_EXPECT(s1
== "123");
862 fail("", __FILE__
, __LINE__
);
864 catch(std::length_error
const&)
872 fail("", __FILE__
, __LINE__
);
874 catch(std::length_error
const&)
885 static_string
<3> s1("123");
887 BEAST_EXPECT(s1
== "12");
888 BEAST_EXPECT(*s1
.end() == 0);
890 BEAST_EXPECT(s1
== "1");
891 BEAST_EXPECT(*s1
.end() == 0);
893 BEAST_EXPECT(s1
.empty());
894 BEAST_EXPECT(*s1
.end() == 0);
902 static_string
<3> s1("1");
904 BEAST_EXPECT(s1
== "1__");
905 BEAST_EXPECT(*s1
.end() == 0);
908 static_string
<2> s2("1");
910 fail("", __FILE__
, __LINE__
);
912 catch(std::length_error
const&)
918 static_string
<2> s1("__");
919 static_string
<3> s2("1");
921 BEAST_EXPECT(s2
== "1__");
922 BEAST_EXPECT(*s2
.end() == 0);
925 static_string
<2> s3("1");
927 fail("", __FILE__
, __LINE__
);
929 catch(std::length_error
const&)
935 static_string
<3> s1("XYZ");
936 static_string
<4> s2("12");
938 BEAST_EXPECT(s2
== "12YZ");
939 BEAST_EXPECT(*s2
.end() == 0);
940 static_string
<3> s3("12");
942 BEAST_EXPECT(s3
== "12Y");
943 BEAST_EXPECT(*s3
.end() == 0);
946 static_string
<3> s4("12");
948 fail("", __FILE__
, __LINE__
);
950 catch(std::out_of_range
const&)
956 static_string
<3> s4("12");
958 fail("", __FILE__
, __LINE__
);
960 catch(std::length_error
const&)
966 static_string
<4> s1("12");
968 BEAST_EXPECT(s1
== "12XY");
969 BEAST_EXPECT(*s1
.end() == 0);
972 static_string
<3> s3("12");
974 fail("", __FILE__
, __LINE__
);
976 catch(std::length_error
const&)
982 static_string
<5> s1("12");
984 BEAST_EXPECT(s1
== "12XYZ");
985 BEAST_EXPECT(*s1
.end() == 0);
988 static_string
<4> s2("12");
990 fail("", __FILE__
, __LINE__
);
992 catch(std::length_error
const&)
998 static_string
<3> s1("XYZ");
999 static_string
<5> s2("12");
1000 s2
.append(s1
.begin(), s1
.end());
1001 BEAST_EXPECT(s2
== "12XYZ");
1002 BEAST_EXPECT(*s2
.end() == 0);
1005 static_string
<4> s3("12");
1006 s3
.append(s1
.begin(), s1
.end());
1007 fail("", __FILE__
, __LINE__
);
1009 catch(std::length_error
const&)
1015 static_string
<5> s1("123");
1016 s1
.append({'X', 'Y'});
1017 BEAST_EXPECT(s1
== "123XY");
1018 BEAST_EXPECT(*s1
.end() == 0);
1021 static_string
<4> s2("123");
1022 s2
.append({'X', 'Y'});
1023 fail("", __FILE__
, __LINE__
);
1025 catch(std::length_error
const&)
1031 string_view
s1("XYZ");
1032 static_string
<5> s2("12");
1034 BEAST_EXPECT(s2
== "12XYZ");
1035 BEAST_EXPECT(*s2
.end() == 0);
1038 static_string
<4> s3("12");
1040 fail("", __FILE__
, __LINE__
);
1042 catch(std::length_error
const&)
1048 static_string
<6> s1("123");
1049 s1
.append(std::string("UVX"), 1);
1050 BEAST_EXPECT(s1
== "123VX");
1051 BEAST_EXPECT(*s1
.end() == 0);
1052 s1
.append(std::string("PQR"), 1, 1);
1053 BEAST_EXPECT(s1
== "123VXQ");
1054 BEAST_EXPECT(*s1
.end() == 0);
1057 static_string
<3> s2("123");
1058 s2
.append(std::string("PQR"), 1, 1);
1059 fail("", __FILE__
, __LINE__
);
1061 catch(std::length_error
const&)
1072 static_string
<2> s1("__");
1073 static_string
<3> s2("1");
1075 BEAST_EXPECT(s2
== "1__");
1076 BEAST_EXPECT(*s2
.end() == 0);
1079 static_string
<2> s3("1");
1081 fail("", __FILE__
, __LINE__
);
1083 catch(std::length_error
const&)
1089 static_string
<3> s1("12");
1091 BEAST_EXPECT(s1
== "123");
1095 fail("", __FILE__
, __LINE__
);
1097 catch(std::length_error
const&)
1103 static_string
<4> s1("12");
1105 BEAST_EXPECT(s1
== "1234");
1109 fail("", __FILE__
, __LINE__
);
1111 catch(std::length_error
const&)
1117 static_string
<4> s1("12");
1119 BEAST_EXPECT(s1
== "1234");
1123 fail("", __FILE__
, __LINE__
);
1125 catch(std::length_error
const&)
1131 string_view
s1("34");
1132 static_string
<4> s2("12");
1134 BEAST_EXPECT(s2
== "1234");
1138 fail("", __FILE__
, __LINE__
);
1140 catch(std::length_error
const&)
1150 using str1
= static_string
<1>;
1151 using str2
= static_string
<2>;
1157 BEAST_EXPECT(s1
.compare(s2
) < 0);
1158 BEAST_EXPECT(s2
.compare(s1
) > 0);
1159 BEAST_EXPECT(s1
< "10");
1160 BEAST_EXPECT(s2
> "1");
1161 BEAST_EXPECT("10" > s1
);
1162 BEAST_EXPECT("1" < s2
);
1163 BEAST_EXPECT(s1
< "20");
1164 BEAST_EXPECT(s2
> "1");
1165 BEAST_EXPECT(s2
> "2");
1170 BEAST_EXPECT(s1
== s2
);
1171 BEAST_EXPECT(s1
<= s2
);
1172 BEAST_EXPECT(s1
>= s2
);
1173 BEAST_EXPECT(! (s1
< s2
));
1174 BEAST_EXPECT(! (s1
> s2
));
1175 BEAST_EXPECT(! (s1
!= s2
));
1180 BEAST_EXPECT(s1
== s2
);
1181 BEAST_EXPECT(s1
<= s2
);
1182 BEAST_EXPECT(s1
>= s2
);
1183 BEAST_EXPECT(! (s1
< s2
));
1184 BEAST_EXPECT(! (s1
> s2
));
1185 BEAST_EXPECT(! (s1
!= s2
));
1189 BEAST_EXPECT(s
== "x");
1190 BEAST_EXPECT(s
<= "x");
1191 BEAST_EXPECT(s
>= "x");
1192 BEAST_EXPECT(! (s
< "x"));
1193 BEAST_EXPECT(! (s
> "x"));
1194 BEAST_EXPECT(! (s
!= "x"));
1195 BEAST_EXPECT("x" == s
);
1196 BEAST_EXPECT("x" <= s
);
1197 BEAST_EXPECT("x" >= s
);
1198 BEAST_EXPECT(! ("x" < s
));
1199 BEAST_EXPECT(! ("x" > s
));
1200 BEAST_EXPECT(! ("x" != s
));
1204 BEAST_EXPECT(s
<= "y");
1205 BEAST_EXPECT(s
< "y");
1206 BEAST_EXPECT(s
!= "y");
1207 BEAST_EXPECT(! (s
== "y"));
1208 BEAST_EXPECT(! (s
>= "y"));
1209 BEAST_EXPECT(! (s
> "x"));
1210 BEAST_EXPECT("y" >= s
);
1211 BEAST_EXPECT("y" > s
);
1212 BEAST_EXPECT("y" != s
);
1213 BEAST_EXPECT(! ("y" == s
));
1214 BEAST_EXPECT(! ("y" <= s
));
1215 BEAST_EXPECT(! ("y" < s
));
1220 BEAST_EXPECT(s1
<= s2
);
1221 BEAST_EXPECT(s1
< s2
);
1222 BEAST_EXPECT(s1
!= s2
);
1223 BEAST_EXPECT(! (s1
== s2
));
1224 BEAST_EXPECT(! (s1
>= s2
));
1225 BEAST_EXPECT(! (s1
> s2
));
1230 BEAST_EXPECT(s1
< s2
);
1231 BEAST_EXPECT(s2
> s1
);
1236 BEAST_EXPECT(s1
< s2
);
1237 BEAST_EXPECT(s2
> s1
);
1245 static_string
<3> s1("123");
1246 static_string
<3> s2("XYZ");
1248 BEAST_EXPECT(s1
== "XYZ");
1249 BEAST_EXPECT(*s1
.end() == 0);
1250 BEAST_EXPECT(s2
== "123");
1251 BEAST_EXPECT(*s2
.end() == 0);
1252 static_string
<3> s3("UV");
1254 BEAST_EXPECT(s2
== "UV");
1255 BEAST_EXPECT(*s2
.end() == 0);
1256 BEAST_EXPECT(s3
== "123");
1257 BEAST_EXPECT(*s3
.end() == 0);
1260 static_string
<5> s1("123");
1261 static_string
<7> s2("XYZ");
1263 BEAST_EXPECT(s1
== "XYZ");
1264 BEAST_EXPECT(*s1
.end() == 0);
1265 BEAST_EXPECT(s2
== "123");
1266 BEAST_EXPECT(*s2
.end() == 0);
1267 static_string
<3> s3("UV");
1269 BEAST_EXPECT(s2
== "UV");
1270 BEAST_EXPECT(*s2
.end() == 0);
1271 BEAST_EXPECT(s3
== "123");
1272 BEAST_EXPECT(*s3
.end() == 0);
1275 static_string
<5> s4("12345");
1276 static_string
<3> s5("XYZ");
1278 fail("", __FILE__
, __LINE__
);
1280 catch(std::length_error
const&)
1286 static_string
<3> s4("XYZ");
1287 static_string
<5> s5("12345");
1289 fail("", __FILE__
, __LINE__
);
1291 catch(std::length_error
const&)
1301 using str1
= static_string
<1>;
1302 using str2
= static_string
<2>;
1305 BEAST_EXPECT(s1
== "");
1306 BEAST_EXPECT(s1
.empty());
1307 BEAST_EXPECT(s1
.size() == 0);
1308 BEAST_EXPECT(s1
.max_size() == 1);
1309 BEAST_EXPECT(s1
.capacity() == 1);
1310 BEAST_EXPECT(s1
.begin() == s1
.end());
1311 BEAST_EXPECT(s1
.cbegin() == s1
.cend());
1312 BEAST_EXPECT(s1
.rbegin() == s1
.rend());
1313 BEAST_EXPECT(s1
.crbegin() == s1
.crend());
1316 BEAST_EXPECT(s1
.at(0) == 0);
1319 catch(std::exception
const&)
1323 BEAST_EXPECT(s1
.data()[0] == 0);
1324 BEAST_EXPECT(*s1
.c_str() == 0);
1325 BEAST_EXPECT(std::distance(s1
.begin(), s1
.end()) == 0);
1326 BEAST_EXPECT(std::distance(s1
.cbegin(), s1
.cend()) == 0);
1327 BEAST_EXPECT(std::distance(s1
.rbegin(), s1
.rend()) == 0);
1328 BEAST_EXPECT(std::distance(s1
.crbegin(), s1
.crend()) == 0);
1329 BEAST_EXPECT(s1
.compare(s1
) == 0);
1333 BEAST_EXPECT(s1
== "");
1334 BEAST_EXPECT(s1
.empty());
1335 BEAST_EXPECT(s1
.size() == 0);
1336 BEAST_EXPECT(s1
.max_size() == 1);
1337 BEAST_EXPECT(s1
.capacity() == 1);
1338 BEAST_EXPECT(s1
.begin() == s1
.end());
1339 BEAST_EXPECT(s1
.cbegin() == s1
.cend());
1340 BEAST_EXPECT(s1
.rbegin() == s1
.rend());
1341 BEAST_EXPECT(s1
.crbegin() == s1
.crend());
1344 BEAST_EXPECT(s1
.at(0) == 0);
1347 catch(std::exception
const&)
1351 BEAST_EXPECT(s1
.data()[0] == 0);
1352 BEAST_EXPECT(*s1
.c_str() == 0);
1353 BEAST_EXPECT(std::distance(s1
.begin(), s1
.end()) == 0);
1354 BEAST_EXPECT(std::distance(s1
.cbegin(), s1
.cend()) == 0);
1355 BEAST_EXPECT(std::distance(s1
.rbegin(), s1
.rend()) == 0);
1356 BEAST_EXPECT(std::distance(s1
.crbegin(), s1
.crend()) == 0);
1357 BEAST_EXPECT(s1
.compare(s1
) == 0);
1362 BEAST_EXPECT(s2
== "x");
1363 BEAST_EXPECT(s2
[0] == 'x');
1364 BEAST_EXPECT(s2
.at(0) == 'x');
1365 BEAST_EXPECT(s2
.front() == 'x');
1366 BEAST_EXPECT(s2
.back() == 'x');
1368 BEAST_EXPECT(s3
== "x");
1369 BEAST_EXPECT(s3
[0] == 'x');
1370 BEAST_EXPECT(s3
.at(0) == 'x');
1371 BEAST_EXPECT(s3
.front() == 'x');
1372 BEAST_EXPECT(s3
.back() == 'x');
1374 BEAST_EXPECT(s2
== "y");
1375 BEAST_EXPECT(s3
== "x");
1377 BEAST_EXPECT(s1
== "y");
1379 BEAST_EXPECT(s1
.empty());
1380 BEAST_EXPECT(s1
.size() == 0);
1385 BEAST_EXPECT(s2
== "x");
1388 BEAST_EXPECT(s3
== "x");
1390 BEAST_EXPECT(s1
.size() == 2);
1391 BEAST_EXPECT(s1
[0] == 'x');
1392 BEAST_EXPECT(s1
[1] == 'y');
1393 BEAST_EXPECT(s1
.at(0) == 'x');
1394 BEAST_EXPECT(s1
.at(1) == 'y');
1395 BEAST_EXPECT(s1
.front() == 'x');
1396 BEAST_EXPECT(s1
.back() == 'y');
1398 BEAST_EXPECT(s4
[0] == 'x');
1399 BEAST_EXPECT(s4
[1] == 'y');
1400 BEAST_EXPECT(s4
.at(0) == 'x');
1401 BEAST_EXPECT(s4
.at(1) == 'y');
1402 BEAST_EXPECT(s4
.front() == 'x');
1403 BEAST_EXPECT(s4
.back() == 'y');
1409 catch(std::exception
const&)
1418 catch(std::exception
const&)
1432 catch(std::length_error
const&)
1441 testToStaticString()
1443 BEAST_EXPECT(to_static_string
<long>(0) == "0");
1444 BEAST_EXPECT(to_static_string
<long>(1) == "1");
1445 BEAST_EXPECT(to_static_string
<long>(0xffff) == "65535");
1446 BEAST_EXPECT(to_static_string
<long>(0x10000) == "65536");
1447 BEAST_EXPECT(to_static_string
<long long>(0xffffffff) == "4294967295");
1449 BEAST_EXPECT(to_static_string
<long>(-1) == "-1");
1450 BEAST_EXPECT(to_static_string
<long>(-65535) == "-65535");
1451 BEAST_EXPECT(to_static_string
<long>(-65536) == "-65536");
1452 BEAST_EXPECT(to_static_string
<long long>(-4294967295ll) == "-4294967295");
1454 BEAST_EXPECT(to_static_string
<unsigned long>(0) == "0");
1455 BEAST_EXPECT(to_static_string
<unsigned long>(1) == "1");
1456 BEAST_EXPECT(to_static_string
<unsigned long>(0xffff) == "65535");
1457 BEAST_EXPECT(to_static_string
<unsigned long>(0x10000) == "65536");
1458 BEAST_EXPECT(to_static_string
<unsigned long>(0xffffffff) == "4294967295");
1474 testToStaticString();
1478 BEAST_DEFINE_TESTSUITE(beast
,core
,static_string
);