]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/core/test/sv_compare_test.cpp
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / boost / libs / core / test / sv_compare_test.cpp
1 // Copyright 2021 Peter Dimov
2 // Distributed under the Boost Software License, Version 1.0.
3 // https://www.boost.org/LICENSE_1_0.txt
4
5 #include <boost/core/detail/string_view.hpp>
6 #include <boost/core/lightweight_test.hpp>
7 #include <stdexcept>
8 #include <cstddef>
9
10 int main()
11 {
12 std::size_t const npos = boost::core::string_view::npos;
13
14 {
15 boost::core::string_view sv1( "" );
16 boost::core::string_view sv2( "" );
17
18 BOOST_TEST_EQ( sv1.compare( sv2 ), 0 );
19
20 BOOST_TEST_EQ( sv1.compare( 0, 0, sv2 ), 0 );
21 BOOST_TEST_EQ( sv1.compare( 0, 1, sv2 ), 0 );
22
23 BOOST_TEST_THROWS( sv1.compare( 1, 0, sv2 ), std::out_of_range );
24 BOOST_TEST_THROWS( sv1.compare( 1, 1, sv2 ), std::out_of_range );
25 BOOST_TEST_THROWS( sv1.compare( 1, npos, sv2 ), std::out_of_range );
26
27 BOOST_TEST_EQ( sv1.compare( 0, 0, sv2, 0, 0 ), 0 );
28 BOOST_TEST_EQ( sv1.compare( 0, 1, sv2, 0, 1 ), 0 );
29
30 BOOST_TEST_THROWS( sv1.compare( 1, 0, sv2, 0, 0 ), std::out_of_range );
31 BOOST_TEST_THROWS( sv1.compare( 1, 1, sv2, 0, 1 ), std::out_of_range );
32
33 BOOST_TEST_THROWS( sv1.compare( 0, 0, sv2, 1, 0 ), std::out_of_range );
34 BOOST_TEST_THROWS( sv1.compare( 0, 1, sv2, 1, 1 ), std::out_of_range );
35
36 BOOST_TEST_EQ( sv1.compare( "" ), 0 );
37 BOOST_TEST_LT( sv1.compare( "1" ), 0 );
38
39 BOOST_TEST_EQ( sv1.compare( 0, 0, "" ), 0 );
40 BOOST_TEST_LT( sv1.compare( 0, 0, "1" ), 0 );
41
42 BOOST_TEST_EQ( sv1.compare( 0, 1, "" ), 0 );
43 BOOST_TEST_LT( sv1.compare( 0, 1, "1" ), 0 );
44
45 BOOST_TEST_THROWS( sv1.compare( 1, 0, "" ), std::out_of_range );
46 BOOST_TEST_THROWS( sv1.compare( 1, 1, "1" ), std::out_of_range );
47
48 BOOST_TEST_EQ( sv1.compare( 0, 0, "", 0 ), 0 );
49 BOOST_TEST_EQ( sv1.compare( 0, 0, "1", 0 ), 0 );
50 BOOST_TEST_LT( sv1.compare( 0, 0, "1", 1 ), 0 );
51
52 BOOST_TEST_EQ( sv1.compare( 0, 1, "", 0 ), 0 );
53 BOOST_TEST_EQ( sv1.compare( 0, 1, "1", 0 ), 0 );
54 BOOST_TEST_LT( sv1.compare( 0, 1, "1", 1 ), 0 );
55
56 BOOST_TEST_THROWS( sv1.compare( 1, 0, "", 0 ), std::out_of_range );
57 BOOST_TEST_THROWS( sv1.compare( 1, 1, "1", 0 ), std::out_of_range );
58 BOOST_TEST_THROWS( sv1.compare( 1, 1, "1", 1 ), std::out_of_range );
59 }
60
61 {
62 boost::core::string_view sv1( "123412345" );
63 boost::core::string_view sv2( "1234" );
64
65 BOOST_TEST_GT( sv1.compare( sv2 ), 0 );
66
67 BOOST_TEST_LT( sv1.compare( 0, 3, sv2 ), 0 );
68 BOOST_TEST_EQ( sv1.compare( 0, 4, sv2 ), 0 );
69 BOOST_TEST_GT( sv1.compare( 0, 5, sv2 ), 0 );
70 BOOST_TEST_GT( sv1.compare( 0, npos, sv2 ), 0 );
71
72 BOOST_TEST_LT( sv1.compare( 1, 0, sv2 ), 0 );
73 BOOST_TEST_GT( sv1.compare( 1, 1, sv2 ), 0 );
74
75 BOOST_TEST_LT( sv1.compare( 4, 3, sv2 ), 0 );
76 BOOST_TEST_EQ( sv1.compare( 4, 4, sv2 ), 0 );
77 BOOST_TEST_GT( sv1.compare( 4, 5, sv2 ), 0 );
78
79 BOOST_TEST_LT( sv1.compare( 9, 0, sv2 ), 0 );
80 BOOST_TEST_LT( sv1.compare( 9, 1, sv2 ), 0 );
81
82 BOOST_TEST_THROWS( sv1.compare( 10, 0, sv2 ), std::out_of_range );
83 BOOST_TEST_THROWS( sv1.compare( 10, 1, sv2 ), std::out_of_range );
84
85 BOOST_TEST_GT( sv1.compare( 0, 3, sv2, 0, 2 ), 0 );
86 BOOST_TEST_EQ( sv1.compare( 0, 3, sv2, 0, 3 ), 0 );
87 BOOST_TEST_LT( sv1.compare( 0, 3, sv2, 0, 4 ), 0 );
88 BOOST_TEST_LT( sv1.compare( 0, 3, sv2, 0, 5 ), 0 );
89
90 BOOST_TEST_GT( sv1.compare( 0, 4, sv2, 0, 3 ), 0 );
91 BOOST_TEST_EQ( sv1.compare( 0, 4, sv2, 0, 4 ), 0 );
92 BOOST_TEST_EQ( sv1.compare( 0, 4, sv2, 0, 5 ), 0 );
93
94 BOOST_TEST_LT( sv1.compare( 5, 2, sv2, 1, npos ), 0 );
95 BOOST_TEST_EQ( sv1.compare( 5, 3, sv2, 1, npos ), 0 );
96 BOOST_TEST_GT( sv1.compare( 5, 4, sv2, 1, npos ), 0 );
97
98 BOOST_TEST_EQ( sv1.compare( 9, 0, sv2, 0, 0 ), 0 );
99 BOOST_TEST_LT( sv1.compare( 9, 1, sv2, 0, 1 ), 0 );
100
101 BOOST_TEST_THROWS( sv1.compare( 10, 0, sv2, 0, 0 ), std::out_of_range );
102 BOOST_TEST_THROWS( sv1.compare( 10, 1, sv2, 0, 1 ), std::out_of_range );
103
104 BOOST_TEST_EQ( sv1.compare( 0, 0, sv2, 4, 0 ), 0 );
105 BOOST_TEST_GT( sv1.compare( 0, 1, sv2, 4, 1 ), 0 );
106
107 BOOST_TEST_THROWS( sv1.compare( 0, 0, sv2, 5, 0 ), std::out_of_range );
108 BOOST_TEST_THROWS( sv1.compare( 0, 1, sv2, 5, 1 ), std::out_of_range );
109
110 BOOST_TEST_GT( sv1.compare( "" ), 0 );
111 BOOST_TEST_GT( sv1.compare( "12341234" ), 0 );
112 BOOST_TEST_GT( sv1.compare( "123412344" ), 0 );
113 BOOST_TEST_EQ( sv1.compare( "123412345" ), 0 );
114 BOOST_TEST_LT( sv1.compare( "123412346" ), 0 );
115 BOOST_TEST_LT( sv1.compare( "1234123456" ), 0 );
116
117 BOOST_TEST_GT( sv1.compare( 4, 3, "" ), 0 );
118 BOOST_TEST_GT( sv1.compare( 4, 3, "1" ), 0 );
119 BOOST_TEST_GT( sv1.compare( 4, 3, "12" ), 0 );
120 BOOST_TEST_GT( sv1.compare( 4, 3, "122" ), 0 );
121 BOOST_TEST_EQ( sv1.compare( 4, 3, "123" ), 0 );
122 BOOST_TEST_LT( sv1.compare( 4, 3, "124" ), 0 );
123 BOOST_TEST_LT( sv1.compare( 4, 3, "1234" ), 0 );
124
125 BOOST_TEST_EQ( sv1.compare( 9, 0, "" ), 0 );
126 BOOST_TEST_LT( sv1.compare( 9, 1, "1" ), 0 );
127
128 BOOST_TEST_THROWS( sv1.compare( 10, 0, "" ), std::out_of_range );
129 BOOST_TEST_THROWS( sv1.compare( 10, 1, "1" ), std::out_of_range );
130
131 BOOST_TEST_GT( sv1.compare( 4, npos, "123456", 4 ), 0 );
132 BOOST_TEST_EQ( sv1.compare( 4, npos, "123456", 5 ), 0 );
133 BOOST_TEST_LT( sv1.compare( 4, npos, "123456", 6 ), 0 );
134
135 BOOST_TEST_EQ( sv1.compare( 9, npos, "", 0 ), 0 );
136 BOOST_TEST_EQ( sv1.compare( 9, npos, "1", 0 ), 0 );
137 BOOST_TEST_LT( sv1.compare( 9, npos, "1", 1 ), 0 );
138
139 BOOST_TEST_THROWS( sv1.compare( 10, npos, "", 0 ), std::out_of_range );
140 BOOST_TEST_THROWS( sv1.compare( 10, npos, "1", 0 ), std::out_of_range );
141 BOOST_TEST_THROWS( sv1.compare( 10, npos, "1", 1 ), std::out_of_range );
142 }
143
144 return boost::report_errors();
145 }