]>
git.proxmox.com Git - ceph.git/blob - 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
5 #include <boost/core/detail/string_view.hpp>
6 #include <boost/core/lightweight_test.hpp>
12 std::size_t const npos
= boost::core::string_view::npos
;
15 boost::core::string_view
sv1( "" );
16 boost::core::string_view
sv2( "" );
18 BOOST_TEST_EQ( sv1
.compare( sv2
), 0 );
20 BOOST_TEST_EQ( sv1
.compare( 0, 0, sv2
), 0 );
21 BOOST_TEST_EQ( sv1
.compare( 0, 1, sv2
), 0 );
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
);
27 BOOST_TEST_EQ( sv1
.compare( 0, 0, sv2
, 0, 0 ), 0 );
28 BOOST_TEST_EQ( sv1
.compare( 0, 1, sv2
, 0, 1 ), 0 );
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
);
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
);
36 BOOST_TEST_EQ( sv1
.compare( "" ), 0 );
37 BOOST_TEST_LT( sv1
.compare( "1" ), 0 );
39 BOOST_TEST_EQ( sv1
.compare( 0, 0, "" ), 0 );
40 BOOST_TEST_LT( sv1
.compare( 0, 0, "1" ), 0 );
42 BOOST_TEST_EQ( sv1
.compare( 0, 1, "" ), 0 );
43 BOOST_TEST_LT( sv1
.compare( 0, 1, "1" ), 0 );
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
);
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 );
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 );
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
);
62 boost::core::string_view
sv1( "123412345" );
63 boost::core::string_view
sv2( "1234" );
65 BOOST_TEST_GT( sv1
.compare( sv2
), 0 );
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 );
72 BOOST_TEST_LT( sv1
.compare( 1, 0, sv2
), 0 );
73 BOOST_TEST_GT( sv1
.compare( 1, 1, sv2
), 0 );
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 );
79 BOOST_TEST_LT( sv1
.compare( 9, 0, sv2
), 0 );
80 BOOST_TEST_LT( sv1
.compare( 9, 1, sv2
), 0 );
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
);
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 );
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 );
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 );
98 BOOST_TEST_EQ( sv1
.compare( 9, 0, sv2
, 0, 0 ), 0 );
99 BOOST_TEST_LT( sv1
.compare( 9, 1, sv2
, 0, 1 ), 0 );
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
);
104 BOOST_TEST_EQ( sv1
.compare( 0, 0, sv2
, 4, 0 ), 0 );
105 BOOST_TEST_GT( sv1
.compare( 0, 1, sv2
, 4, 1 ), 0 );
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
);
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 );
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 );
125 BOOST_TEST_EQ( sv1
.compare( 9, 0, "" ), 0 );
126 BOOST_TEST_LT( sv1
.compare( 9, 1, "1" ), 0 );
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
);
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 );
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 );
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
);
144 return boost::report_errors();