]>
git.proxmox.com Git - ceph.git/blob - 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
5 #include <boost/core/detail/string_view.hpp>
6 #include <boost/core/lightweight_test.hpp>
13 boost::core::string_view sv
;
16 boost::core::string_view sv2
= sv
.substr();
18 BOOST_TEST_EQ( sv2
.data(), sv
.data() );
19 BOOST_TEST_EQ( sv2
.size(), sv
.size() );
23 boost::core::string_view sv2
= sv
.substr( 0 );
25 BOOST_TEST_EQ( sv2
.data(), sv
.data() );
26 BOOST_TEST_EQ( sv2
.size(), sv
.size() );
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
);
33 boost::core::string_view sv2
= sv
.substr( 0, 1 );
35 BOOST_TEST_EQ( sv2
.data(), sv
.data() );
36 BOOST_TEST_EQ( sv2
.size(), sv
.size() );
40 boost::core::string_view sv2
= sv
.substr( 0, 0 );
42 BOOST_TEST_EQ( sv2
.data(), sv
.data() );
43 BOOST_TEST_EQ( sv2
.size(), sv
.size() );
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
);
51 boost::core::string_view
sv( "12345" );
54 boost::core::string_view sv2
= sv
.substr();
56 BOOST_TEST_EQ( sv2
.data(), sv
.data() );
57 BOOST_TEST_EQ( sv2
.size(), sv
.size() );
61 boost::core::string_view sv2
= sv
.substr( 0 );
63 BOOST_TEST_EQ( sv2
.data(), sv
.data() );
64 BOOST_TEST_EQ( sv2
.size(), sv
.size() );
68 boost::core::string_view sv2
= sv
.substr( 2 );
70 BOOST_TEST_EQ( sv2
.data(), sv
.data() + 2 );
71 BOOST_TEST_EQ( sv2
.size(), sv
.size() - 2 );
75 boost::core::string_view sv2
= sv
.substr( 5 );
77 BOOST_TEST_EQ( sv2
.data(), sv
.data() + 5 );
78 BOOST_TEST_EQ( sv2
.size(), sv
.size() - 5 );
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
);
85 boost::core::string_view sv2
= sv
.substr( 0, 0 );
87 BOOST_TEST_EQ( sv2
.data(), sv
.data() );
88 BOOST_TEST_EQ( sv2
.size(), 0 );
92 boost::core::string_view sv2
= sv
.substr( 2, 0 );
94 BOOST_TEST_EQ( sv2
.data(), sv
.data() + 2 );
95 BOOST_TEST_EQ( sv2
.size(), 0 );
99 boost::core::string_view sv2
= sv
.substr( 5, 0 );
101 BOOST_TEST_EQ( sv2
.data(), sv
.data() + 5 );
102 BOOST_TEST_EQ( sv2
.size(), 0 );
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
);
109 boost::core::string_view sv2
= sv
.substr( 0, 3 );
111 BOOST_TEST_EQ( sv2
.data(), sv
.data() );
112 BOOST_TEST_EQ( sv2
.size(), 3 );
116 boost::core::string_view sv2
= sv
.substr( 2, 3 );
118 BOOST_TEST_EQ( sv2
.data(), sv
.data() + 2 );
119 BOOST_TEST_EQ( sv2
.size(), 3 );
123 boost::core::string_view sv2
= sv
.substr( 4, 3 );
125 BOOST_TEST_EQ( sv2
.data(), sv
.data() + 4 );
126 BOOST_TEST_EQ( sv2
.size(), 1 );
130 boost::core::string_view sv2
= sv
.substr( 5, 3 );
132 BOOST_TEST_EQ( sv2
.data(), sv
.data() + 5 );
133 BOOST_TEST_EQ( sv2
.size(), 0 );
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
);
140 boost::core::string_view sv2
= sv
.substr( 0, 5 );
142 BOOST_TEST_EQ( sv2
.data(), sv
.data() );
143 BOOST_TEST_EQ( sv2
.size(), 5 );
147 boost::core::string_view sv2
= sv
.substr( 2, 5 );
149 BOOST_TEST_EQ( sv2
.data(), sv
.data() + 2 );
150 BOOST_TEST_EQ( sv2
.size(), 3 );
154 boost::core::string_view sv2
= sv
.substr( 4, 5 );
156 BOOST_TEST_EQ( sv2
.data(), sv
.data() + 4 );
157 BOOST_TEST_EQ( sv2
.size(), 1 );
161 boost::core::string_view sv2
= sv
.substr( 5, 5 );
163 BOOST_TEST_EQ( sv2
.data(), sv
.data() + 5 );
164 BOOST_TEST_EQ( sv2
.size(), 0 );
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
);
171 boost::core::string_view sv2
= sv
.substr( 0, 8 );
173 BOOST_TEST_EQ( sv2
.data(), sv
.data() );
174 BOOST_TEST_EQ( sv2
.size(), 5 );
178 boost::core::string_view sv2
= sv
.substr( 2, 8 );
180 BOOST_TEST_EQ( sv2
.data(), sv
.data() + 2 );
181 BOOST_TEST_EQ( sv2
.size(), 3 );
185 boost::core::string_view sv2
= sv
.substr( 4, 8 );
187 BOOST_TEST_EQ( sv2
.data(), sv
.data() + 4 );
188 BOOST_TEST_EQ( sv2
.size(), 1 );
192 boost::core::string_view sv2
= sv
.substr( 5, 8 );
194 BOOST_TEST_EQ( sv2
.data(), sv
.data() + 5 );
195 BOOST_TEST_EQ( sv2
.size(), 0 );
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
);
202 return boost::report_errors();