]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/core/test/sv_substr_test.cpp
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / boost / libs / core / test / sv_substr_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 {
13 boost::core::string_view sv;
14
15 {
16 boost::core::string_view sv2 = sv.substr();
17
18 BOOST_TEST_EQ( sv2.data(), sv.data() );
19 BOOST_TEST_EQ( sv2.size(), sv.size() );
20 }
21
22 {
23 boost::core::string_view sv2 = sv.substr( 0 );
24
25 BOOST_TEST_EQ( sv2.data(), sv.data() );
26 BOOST_TEST_EQ( sv2.size(), sv.size() );
27 }
28
29 BOOST_TEST_THROWS( sv.substr( 1 ), std::out_of_range );
30 BOOST_TEST_THROWS( sv.substr( boost::core::string_view::npos ), std::out_of_range );
31
32 {
33 boost::core::string_view sv2 = sv.substr( 0, 1 );
34
35 BOOST_TEST_EQ( sv2.data(), sv.data() );
36 BOOST_TEST_EQ( sv2.size(), sv.size() );
37 }
38
39 {
40 boost::core::string_view sv2 = sv.substr( 0, 0 );
41
42 BOOST_TEST_EQ( sv2.data(), sv.data() );
43 BOOST_TEST_EQ( sv2.size(), sv.size() );
44 }
45
46 BOOST_TEST_THROWS( sv.substr( 1, 0 ), std::out_of_range );
47 BOOST_TEST_THROWS( sv.substr( boost::core::string_view::npos, 0 ), std::out_of_range );
48 }
49
50 {
51 boost::core::string_view sv( "12345" );
52
53 {
54 boost::core::string_view sv2 = sv.substr();
55
56 BOOST_TEST_EQ( sv2.data(), sv.data() );
57 BOOST_TEST_EQ( sv2.size(), sv.size() );
58 }
59
60 {
61 boost::core::string_view sv2 = sv.substr( 0 );
62
63 BOOST_TEST_EQ( sv2.data(), sv.data() );
64 BOOST_TEST_EQ( sv2.size(), sv.size() );
65 }
66
67 {
68 boost::core::string_view sv2 = sv.substr( 2 );
69
70 BOOST_TEST_EQ( sv2.data(), sv.data() + 2 );
71 BOOST_TEST_EQ( sv2.size(), sv.size() - 2 );
72 }
73
74 {
75 boost::core::string_view sv2 = sv.substr( 5 );
76
77 BOOST_TEST_EQ( sv2.data(), sv.data() + 5 );
78 BOOST_TEST_EQ( sv2.size(), sv.size() - 5 );
79 }
80
81 BOOST_TEST_THROWS( sv.substr( 6 ), std::out_of_range );
82 BOOST_TEST_THROWS( sv.substr( boost::core::string_view::npos ), std::out_of_range );
83
84 {
85 boost::core::string_view sv2 = sv.substr( 0, 0 );
86
87 BOOST_TEST_EQ( sv2.data(), sv.data() );
88 BOOST_TEST_EQ( sv2.size(), 0 );
89 }
90
91 {
92 boost::core::string_view sv2 = sv.substr( 2, 0 );
93
94 BOOST_TEST_EQ( sv2.data(), sv.data() + 2 );
95 BOOST_TEST_EQ( sv2.size(), 0 );
96 }
97
98 {
99 boost::core::string_view sv2 = sv.substr( 5, 0 );
100
101 BOOST_TEST_EQ( sv2.data(), sv.data() + 5 );
102 BOOST_TEST_EQ( sv2.size(), 0 );
103 }
104
105 BOOST_TEST_THROWS( sv.substr( 6, 0 ), std::out_of_range );
106 BOOST_TEST_THROWS( sv.substr( boost::core::string_view::npos, 0 ), std::out_of_range );
107
108 {
109 boost::core::string_view sv2 = sv.substr( 0, 3 );
110
111 BOOST_TEST_EQ( sv2.data(), sv.data() );
112 BOOST_TEST_EQ( sv2.size(), 3 );
113 }
114
115 {
116 boost::core::string_view sv2 = sv.substr( 2, 3 );
117
118 BOOST_TEST_EQ( sv2.data(), sv.data() + 2 );
119 BOOST_TEST_EQ( sv2.size(), 3 );
120 }
121
122 {
123 boost::core::string_view sv2 = sv.substr( 4, 3 );
124
125 BOOST_TEST_EQ( sv2.data(), sv.data() + 4 );
126 BOOST_TEST_EQ( sv2.size(), 1 );
127 }
128
129 {
130 boost::core::string_view sv2 = sv.substr( 5, 3 );
131
132 BOOST_TEST_EQ( sv2.data(), sv.data() + 5 );
133 BOOST_TEST_EQ( sv2.size(), 0 );
134 }
135
136 BOOST_TEST_THROWS( sv.substr( 6, 3 ), std::out_of_range );
137 BOOST_TEST_THROWS( sv.substr( boost::core::string_view::npos, 3 ), std::out_of_range );
138
139 {
140 boost::core::string_view sv2 = sv.substr( 0, 5 );
141
142 BOOST_TEST_EQ( sv2.data(), sv.data() );
143 BOOST_TEST_EQ( sv2.size(), 5 );
144 }
145
146 {
147 boost::core::string_view sv2 = sv.substr( 2, 5 );
148
149 BOOST_TEST_EQ( sv2.data(), sv.data() + 2 );
150 BOOST_TEST_EQ( sv2.size(), 3 );
151 }
152
153 {
154 boost::core::string_view sv2 = sv.substr( 4, 5 );
155
156 BOOST_TEST_EQ( sv2.data(), sv.data() + 4 );
157 BOOST_TEST_EQ( sv2.size(), 1 );
158 }
159
160 {
161 boost::core::string_view sv2 = sv.substr( 5, 5 );
162
163 BOOST_TEST_EQ( sv2.data(), sv.data() + 5 );
164 BOOST_TEST_EQ( sv2.size(), 0 );
165 }
166
167 BOOST_TEST_THROWS( sv.substr( 6, 5 ), std::out_of_range );
168 BOOST_TEST_THROWS( sv.substr( boost::core::string_view::npos, 5 ), std::out_of_range );
169
170 {
171 boost::core::string_view sv2 = sv.substr( 0, 8 );
172
173 BOOST_TEST_EQ( sv2.data(), sv.data() );
174 BOOST_TEST_EQ( sv2.size(), 5 );
175 }
176
177 {
178 boost::core::string_view sv2 = sv.substr( 2, 8 );
179
180 BOOST_TEST_EQ( sv2.data(), sv.data() + 2 );
181 BOOST_TEST_EQ( sv2.size(), 3 );
182 }
183
184 {
185 boost::core::string_view sv2 = sv.substr( 4, 8 );
186
187 BOOST_TEST_EQ( sv2.data(), sv.data() + 4 );
188 BOOST_TEST_EQ( sv2.size(), 1 );
189 }
190
191 {
192 boost::core::string_view sv2 = sv.substr( 5, 8 );
193
194 BOOST_TEST_EQ( sv2.data(), sv.data() + 5 );
195 BOOST_TEST_EQ( sv2.size(), 0 );
196 }
197
198 BOOST_TEST_THROWS( sv.substr( 6, 8 ), std::out_of_range );
199 BOOST_TEST_THROWS( sv.substr( boost::core::string_view::npos, 8 ), std::out_of_range );
200 }
201
202 return boost::report_errors();
203 }