]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/beast/test/beast/core/static_string.cpp
2 // Copyright (c) 2016-2017 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/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 static_string
<7> s1("12345");
573 s1
.insert(2, 2, '_');
574 BEAST_EXPECT(s1
== "12__345");
575 BEAST_EXPECT(*s1
.end() == 0);
578 static_string
<6> s2("12345");
579 s2
.insert(2, 2, '_');
580 fail("", __FILE__
, __LINE__
);
582 catch(std::length_error
const&)
588 static_string
<6> s2("12345");
589 s2
.insert(6, 2, '_');
590 fail("", __FILE__
, __LINE__
);
592 catch(std::out_of_range
const&)
598 static_string
<7> s1("12345");
600 BEAST_EXPECT(s1
== "12__345");
601 BEAST_EXPECT(*s1
.end() == 0);
604 static_string
<6> s2("12345");
606 fail("", __FILE__
, __LINE__
);
608 catch(std::length_error
const&)
614 static_string
<6> s2("12345");
616 fail("", __FILE__
, __LINE__
);
618 catch(std::out_of_range
const&)
624 static_string
<7> s1("12345");
625 s1
.insert(2, "TUV", 2);
626 BEAST_EXPECT(s1
== "12TU345");
627 BEAST_EXPECT(*s1
.end() == 0);
630 static_string
<6> s2("12345");
631 s2
.insert(2, "TUV", 2);
632 fail("", __FILE__
, __LINE__
);
634 catch(std::length_error
const&)
640 static_string
<6> s2("12345");
641 s2
.insert(6, "TUV", 2);
642 fail("", __FILE__
, __LINE__
);
644 catch(std::out_of_range
const&)
650 static_string
<7> s1("12345");
651 s1
.insert(2, static_string
<3>("TU"));
652 BEAST_EXPECT(s1
== "12TU345");
653 BEAST_EXPECT(*s1
.end() == 0);
656 static_string
<6> s2("12345");
657 s2
.insert(2, static_string
<3>("TUV"));
658 fail("", __FILE__
, __LINE__
);
660 catch(std::length_error
const&)
666 static_string
<6> s2("12345");
667 s2
.insert(6, static_string
<3>("TUV"));
668 fail("", __FILE__
, __LINE__
);
670 catch(std::out_of_range
const&)
676 static_string
<7> s1("12345");
677 s1
.insert(2, static_string
<3>("TUV"), 1);
678 BEAST_EXPECT(s1
== "12UV345");
679 BEAST_EXPECT(*s1
.end() == 0);
681 s1
.insert(2, static_string
<3>("TUV"), 1, 1);
682 BEAST_EXPECT(s1
== "12U345");
683 BEAST_EXPECT(*s1
.end() == 0);
686 static_string
<6> s2("12345");
687 s2
.insert(2, static_string
<3>("TUV"), 1, 2);
688 fail("", __FILE__
, __LINE__
);
690 catch(std::length_error
const&)
696 static_string
<6> s2("12345");
697 s2
.insert(6, static_string
<3>("TUV"), 1, 2);
698 fail("", __FILE__
, __LINE__
);
700 catch(std::out_of_range
const&)
706 static_string
<4> s1("123");
707 s1
.insert(s1
.begin() + 1, '_');
708 BEAST_EXPECT(s1
== "1_23");
709 BEAST_EXPECT(*s1
.end() == 0);
712 static_string
<3> s2("123");
713 s2
.insert(s2
.begin() + 1, '_');
714 fail("", __FILE__
, __LINE__
);
716 catch(std::length_error
const&)
722 static_string
<4> s1("12");
723 s1
.insert(s1
.begin() + 1, 2, '_');
724 BEAST_EXPECT(s1
== "1__2");
725 BEAST_EXPECT(*s1
.end() == 0);
728 static_string
<4> s2("123");
729 s2
.insert(s2
.begin() + 1, 2, ' ');
730 fail("", __FILE__
, __LINE__
);
732 catch(std::length_error
const&)
738 static_string
<3> s1("123");
739 static_string
<5> s2("UV");
740 s2
.insert(s2
.begin() + 1, s1
.begin(), s1
.end());
741 BEAST_EXPECT(s2
== "U123V");
742 BEAST_EXPECT(*s2
.end() == 0);
745 static_string
<4> s3("UV");
746 s3
.insert(s3
.begin() + 1, s1
.begin(), s1
.end());
747 fail("", __FILE__
, __LINE__
);
749 catch(std::length_error
const&)
755 static_string
<5> s1("123");
756 s1
.insert(1, string_view("UV"));
757 BEAST_EXPECT(s1
== "1UV23");
758 BEAST_EXPECT(*s1
.end() == 0);
761 static_string
<4> s2("123");
762 s2
.insert(1, string_view("UV"));
763 fail("", __FILE__
, __LINE__
);
765 catch(std::length_error
const&)
771 static_string
<5> s2("123");
772 s2
.insert(5, string_view("UV"));
773 fail("", __FILE__
, __LINE__
);
775 catch(std::out_of_range
const&)
781 static_string
<5> s1("123");
782 s1
.insert(1, std::string("UV"));
783 BEAST_EXPECT(s1
== "1UV23");
784 BEAST_EXPECT(*s1
.end() == 0);
787 s1
.insert(1, std::string("UV"));
788 fail("", __FILE__
, __LINE__
);
790 catch(std::length_error
const&)
796 static_string
<6> s1("123");
797 s1
.insert(1, std::string("UVX"), 1);
798 BEAST_EXPECT(s1
== "1VX23");
799 BEAST_EXPECT(*s1
.end() == 0);
800 s1
.insert(4, std::string("PQR"), 1, 1);
801 BEAST_EXPECT(s1
== "1VX2Q3");
802 BEAST_EXPECT(*s1
.end() == 0);
805 s1
.insert(4, std::string("PQR"), 1, 1);
806 fail("", __FILE__
, __LINE__
);
808 catch(std::length_error
const&)
819 static_string
<9> s1("123456789");
820 BEAST_EXPECT(s1
.erase(1, 1) == "13456789");
821 BEAST_EXPECT(s1
== "13456789");
822 BEAST_EXPECT(*s1
.end() == 0);
823 BEAST_EXPECT(s1
.erase(5) == "13456");
824 BEAST_EXPECT(s1
== "13456");
825 BEAST_EXPECT(*s1
.end() == 0);
829 fail("", __FILE__
, __LINE__
);
831 catch(std::out_of_range
const&)
837 static_string
<9> s1("123456789");
838 BEAST_EXPECT(*s1
.erase(s1
.begin() + 5) == '7');
839 BEAST_EXPECT(s1
== "12345789");
840 BEAST_EXPECT(*s1
.end() == 0);
843 static_string
<9> s1("123456789");
844 BEAST_EXPECT(*s1
.erase(
845 s1
.begin() + 5, s1
.begin() + 7) == '8');
846 BEAST_EXPECT(s1
== "1234589");
847 BEAST_EXPECT(*s1
.end() == 0);
855 static_string
<3> s1("12");
857 BEAST_EXPECT(s1
== "123");
861 fail("", __FILE__
, __LINE__
);
863 catch(std::length_error
const&)
871 fail("", __FILE__
, __LINE__
);
873 catch(std::length_error
const&)
884 static_string
<3> s1("123");
886 BEAST_EXPECT(s1
== "12");
887 BEAST_EXPECT(*s1
.end() == 0);
889 BEAST_EXPECT(s1
== "1");
890 BEAST_EXPECT(*s1
.end() == 0);
892 BEAST_EXPECT(s1
.empty());
893 BEAST_EXPECT(*s1
.end() == 0);
901 static_string
<3> s1("1");
903 BEAST_EXPECT(s1
== "1__");
904 BEAST_EXPECT(*s1
.end() == 0);
907 static_string
<2> s2("1");
909 fail("", __FILE__
, __LINE__
);
911 catch(std::length_error
const&)
917 static_string
<2> s1("__");
918 static_string
<3> s2("1");
920 BEAST_EXPECT(s2
== "1__");
921 BEAST_EXPECT(*s2
.end() == 0);
924 static_string
<2> s3("1");
926 fail("", __FILE__
, __LINE__
);
928 catch(std::length_error
const&)
934 static_string
<3> s1("XYZ");
935 static_string
<4> s2("12");
937 BEAST_EXPECT(s2
== "12YZ");
938 BEAST_EXPECT(*s2
.end() == 0);
939 static_string
<3> s3("12");
941 BEAST_EXPECT(s3
== "12Y");
942 BEAST_EXPECT(*s3
.end() == 0);
945 static_string
<3> s4("12");
947 fail("", __FILE__
, __LINE__
);
949 catch(std::out_of_range
const&)
955 static_string
<3> s4("12");
957 fail("", __FILE__
, __LINE__
);
959 catch(std::length_error
const&)
965 static_string
<4> s1("12");
967 BEAST_EXPECT(s1
== "12XY");
968 BEAST_EXPECT(*s1
.end() == 0);
971 static_string
<3> s3("12");
973 fail("", __FILE__
, __LINE__
);
975 catch(std::length_error
const&)
981 static_string
<5> s1("12");
983 BEAST_EXPECT(s1
== "12XYZ");
984 BEAST_EXPECT(*s1
.end() == 0);
987 static_string
<4> s2("12");
989 fail("", __FILE__
, __LINE__
);
991 catch(std::length_error
const&)
997 static_string
<3> s1("XYZ");
998 static_string
<5> s2("12");
999 s2
.append(s1
.begin(), s1
.end());
1000 BEAST_EXPECT(s2
== "12XYZ");
1001 BEAST_EXPECT(*s2
.end() == 0);
1004 static_string
<4> s3("12");
1005 s3
.append(s1
.begin(), s1
.end());
1006 fail("", __FILE__
, __LINE__
);
1008 catch(std::length_error
const&)
1014 static_string
<5> s1("123");
1015 s1
.append({'X', 'Y'});
1016 BEAST_EXPECT(s1
== "123XY");
1017 BEAST_EXPECT(*s1
.end() == 0);
1020 static_string
<4> s2("123");
1021 s2
.append({'X', 'Y'});
1022 fail("", __FILE__
, __LINE__
);
1024 catch(std::length_error
const&)
1030 string_view
s1("XYZ");
1031 static_string
<5> s2("12");
1033 BEAST_EXPECT(s2
== "12XYZ");
1034 BEAST_EXPECT(*s2
.end() == 0);
1037 static_string
<4> s3("12");
1039 fail("", __FILE__
, __LINE__
);
1041 catch(std::length_error
const&)
1047 static_string
<6> s1("123");
1048 s1
.append(std::string("UVX"), 1);
1049 BEAST_EXPECT(s1
== "123VX");
1050 BEAST_EXPECT(*s1
.end() == 0);
1051 s1
.append(std::string("PQR"), 1, 1);
1052 BEAST_EXPECT(s1
== "123VXQ");
1053 BEAST_EXPECT(*s1
.end() == 0);
1056 static_string
<3> s2("123");
1057 s2
.append(std::string("PQR"), 1, 1);
1058 fail("", __FILE__
, __LINE__
);
1060 catch(std::length_error
const&)
1071 static_string
<2> s1("__");
1072 static_string
<3> s2("1");
1074 BEAST_EXPECT(s2
== "1__");
1075 BEAST_EXPECT(*s2
.end() == 0);
1078 static_string
<2> s3("1");
1080 fail("", __FILE__
, __LINE__
);
1082 catch(std::length_error
const&)
1088 static_string
<3> s1("12");
1090 BEAST_EXPECT(s1
== "123");
1094 fail("", __FILE__
, __LINE__
);
1096 catch(std::length_error
const&)
1102 static_string
<4> s1("12");
1104 BEAST_EXPECT(s1
== "1234");
1108 fail("", __FILE__
, __LINE__
);
1110 catch(std::length_error
const&)
1116 static_string
<4> s1("12");
1118 BEAST_EXPECT(s1
== "1234");
1122 fail("", __FILE__
, __LINE__
);
1124 catch(std::length_error
const&)
1130 string_view
s1("34");
1131 static_string
<4> s2("12");
1133 BEAST_EXPECT(s2
== "1234");
1137 fail("", __FILE__
, __LINE__
);
1139 catch(std::length_error
const&)
1149 using str1
= static_string
<1>;
1150 using str2
= static_string
<2>;
1156 BEAST_EXPECT(s1
.compare(s2
) < 0);
1157 BEAST_EXPECT(s2
.compare(s1
) > 0);
1158 BEAST_EXPECT(s1
< "10");
1159 BEAST_EXPECT(s2
> "1");
1160 BEAST_EXPECT("10" > s1
);
1161 BEAST_EXPECT("1" < s2
);
1162 BEAST_EXPECT(s1
< "20");
1163 BEAST_EXPECT(s2
> "1");
1164 BEAST_EXPECT(s2
> "2");
1169 BEAST_EXPECT(s1
== s2
);
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
));
1179 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
));
1188 BEAST_EXPECT(s
== "x");
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("x" == s
);
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
));
1203 BEAST_EXPECT(s
<= "y");
1204 BEAST_EXPECT(s
< "y");
1205 BEAST_EXPECT(s
!= "y");
1206 BEAST_EXPECT(! (s
== "y"));
1207 BEAST_EXPECT(! (s
>= "y"));
1208 BEAST_EXPECT(! (s
> "x"));
1209 BEAST_EXPECT("y" >= s
);
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
));
1219 BEAST_EXPECT(s1
<= s2
);
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
));
1229 BEAST_EXPECT(s1
< s2
);
1230 BEAST_EXPECT(s2
> s1
);
1235 BEAST_EXPECT(s1
< s2
);
1236 BEAST_EXPECT(s2
> s1
);
1244 static_string
<3> s1("123");
1245 static_string
<3> s2("XYZ");
1247 BEAST_EXPECT(s1
== "XYZ");
1248 BEAST_EXPECT(*s1
.end() == 0);
1249 BEAST_EXPECT(s2
== "123");
1250 BEAST_EXPECT(*s2
.end() == 0);
1251 static_string
<3> s3("UV");
1253 BEAST_EXPECT(s2
== "UV");
1254 BEAST_EXPECT(*s2
.end() == 0);
1255 BEAST_EXPECT(s3
== "123");
1256 BEAST_EXPECT(*s3
.end() == 0);
1259 static_string
<5> s1("123");
1260 static_string
<7> s2("XYZ");
1262 BEAST_EXPECT(s1
== "XYZ");
1263 BEAST_EXPECT(*s1
.end() == 0);
1264 BEAST_EXPECT(s2
== "123");
1265 BEAST_EXPECT(*s2
.end() == 0);
1266 static_string
<3> s3("UV");
1268 BEAST_EXPECT(s2
== "UV");
1269 BEAST_EXPECT(*s2
.end() == 0);
1270 BEAST_EXPECT(s3
== "123");
1271 BEAST_EXPECT(*s3
.end() == 0);
1274 static_string
<5> s4("12345");
1275 static_string
<3> s5("XYZ");
1277 fail("", __FILE__
, __LINE__
);
1279 catch(std::length_error
const&)
1285 static_string
<3> s4("XYZ");
1286 static_string
<5> s5("12345");
1288 fail("", __FILE__
, __LINE__
);
1290 catch(std::length_error
const&)
1300 using str1
= static_string
<1>;
1301 using str2
= static_string
<2>;
1304 BEAST_EXPECT(s1
== "");
1305 BEAST_EXPECT(s1
.empty());
1306 BEAST_EXPECT(s1
.size() == 0);
1307 BEAST_EXPECT(s1
.max_size() == 1);
1308 BEAST_EXPECT(s1
.capacity() == 1);
1309 BEAST_EXPECT(s1
.begin() == s1
.end());
1310 BEAST_EXPECT(s1
.cbegin() == s1
.cend());
1311 BEAST_EXPECT(s1
.rbegin() == s1
.rend());
1312 BEAST_EXPECT(s1
.crbegin() == s1
.crend());
1315 BEAST_EXPECT(s1
.at(0) == 0);
1318 catch(std::exception
const&)
1322 BEAST_EXPECT(s1
.data()[0] == 0);
1323 BEAST_EXPECT(*s1
.c_str() == 0);
1324 BEAST_EXPECT(std::distance(s1
.begin(), s1
.end()) == 0);
1325 BEAST_EXPECT(std::distance(s1
.cbegin(), s1
.cend()) == 0);
1326 BEAST_EXPECT(std::distance(s1
.rbegin(), s1
.rend()) == 0);
1327 BEAST_EXPECT(std::distance(s1
.crbegin(), s1
.crend()) == 0);
1328 BEAST_EXPECT(s1
.compare(s1
) == 0);
1332 BEAST_EXPECT(s1
== "");
1333 BEAST_EXPECT(s1
.empty());
1334 BEAST_EXPECT(s1
.size() == 0);
1335 BEAST_EXPECT(s1
.max_size() == 1);
1336 BEAST_EXPECT(s1
.capacity() == 1);
1337 BEAST_EXPECT(s1
.begin() == s1
.end());
1338 BEAST_EXPECT(s1
.cbegin() == s1
.cend());
1339 BEAST_EXPECT(s1
.rbegin() == s1
.rend());
1340 BEAST_EXPECT(s1
.crbegin() == s1
.crend());
1343 BEAST_EXPECT(s1
.at(0) == 0);
1346 catch(std::exception
const&)
1350 BEAST_EXPECT(s1
.data()[0] == 0);
1351 BEAST_EXPECT(*s1
.c_str() == 0);
1352 BEAST_EXPECT(std::distance(s1
.begin(), s1
.end()) == 0);
1353 BEAST_EXPECT(std::distance(s1
.cbegin(), s1
.cend()) == 0);
1354 BEAST_EXPECT(std::distance(s1
.rbegin(), s1
.rend()) == 0);
1355 BEAST_EXPECT(std::distance(s1
.crbegin(), s1
.crend()) == 0);
1356 BEAST_EXPECT(s1
.compare(s1
) == 0);
1361 BEAST_EXPECT(s2
== "x");
1362 BEAST_EXPECT(s2
[0] == 'x');
1363 BEAST_EXPECT(s2
.at(0) == 'x');
1364 BEAST_EXPECT(s2
.front() == 'x');
1365 BEAST_EXPECT(s2
.back() == 'x');
1367 BEAST_EXPECT(s3
== "x");
1368 BEAST_EXPECT(s3
[0] == 'x');
1369 BEAST_EXPECT(s3
.at(0) == 'x');
1370 BEAST_EXPECT(s3
.front() == 'x');
1371 BEAST_EXPECT(s3
.back() == 'x');
1373 BEAST_EXPECT(s2
== "y");
1374 BEAST_EXPECT(s3
== "x");
1376 BEAST_EXPECT(s1
== "y");
1378 BEAST_EXPECT(s1
.empty());
1379 BEAST_EXPECT(s1
.size() == 0);
1384 BEAST_EXPECT(s2
== "x");
1387 BEAST_EXPECT(s3
== "x");
1389 BEAST_EXPECT(s1
.size() == 2);
1390 BEAST_EXPECT(s1
[0] == 'x');
1391 BEAST_EXPECT(s1
[1] == 'y');
1392 BEAST_EXPECT(s1
.at(0) == 'x');
1393 BEAST_EXPECT(s1
.at(1) == 'y');
1394 BEAST_EXPECT(s1
.front() == 'x');
1395 BEAST_EXPECT(s1
.back() == 'y');
1397 BEAST_EXPECT(s4
[0] == 'x');
1398 BEAST_EXPECT(s4
[1] == 'y');
1399 BEAST_EXPECT(s4
.at(0) == 'x');
1400 BEAST_EXPECT(s4
.at(1) == 'y');
1401 BEAST_EXPECT(s4
.front() == 'x');
1402 BEAST_EXPECT(s4
.back() == 'y');
1408 catch(std::exception
const&)
1417 catch(std::exception
const&)
1431 catch(std::length_error
const&)
1440 testToStaticString()
1442 BEAST_EXPECT(to_static_string
<long>(0) == "0");
1443 BEAST_EXPECT(to_static_string
<long>(1) == "1");
1444 BEAST_EXPECT(to_static_string
<long>(0xffff) == "65535");
1445 BEAST_EXPECT(to_static_string
<long>(0x10000) == "65536");
1446 BEAST_EXPECT(to_static_string
<long long>(0xffffffff) == "4294967295");
1448 BEAST_EXPECT(to_static_string
<long>(-1) == "-1");
1449 BEAST_EXPECT(to_static_string
<long>(-65535) == "-65535");
1450 BEAST_EXPECT(to_static_string
<long>(-65536) == "-65536");
1451 BEAST_EXPECT(to_static_string
<long long>(-4294967295ll) == "-4294967295");
1453 BEAST_EXPECT(to_static_string
<unsigned long>(0) == "0");
1454 BEAST_EXPECT(to_static_string
<unsigned long>(1) == "1");
1455 BEAST_EXPECT(to_static_string
<unsigned long>(0xffff) == "65535");
1456 BEAST_EXPECT(to_static_string
<unsigned long>(0x10000) == "65536");
1457 BEAST_EXPECT(to_static_string
<unsigned long>(0xffffffff) == "4294967295");
1473 testToStaticString();
1477 BEAST_DEFINE_TESTSUITE(beast
,core
,static_string
);