123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275 |
- //////////////////////////////////////////////////////////////////////////////
- //
- // (C) Copyright Ion Gaztanaga 2007-2017. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- //
- // See http://www.boost.org/libs/container for documentation.
- //
- //////////////////////////////////////////////////////////////////////////////
- #include <boost/container/string.hpp>
- #include <boost/utility/string_view.hpp>
- #include <boost/core/lightweight_test.hpp>
- void conversion_test()
- {
- #ifndef BOOST_CONTAINER_TEMPLATED_CONVERSION_OPERATOR_BROKEN
- {
- const boost::container::string s = "some text";
- boost::string_view sv(s);
- BOOST_TEST(s.data() == sv.data() && s.size() == sv.size());
- boost::string_view sv2;
- sv2 = s;
- BOOST_TEST(s.data() == sv2.data() && s.size() == sv2.size());
- const boost::string_view csv(s);
- BOOST_TEST(s.data() == sv.data() && s.size() == csv.size());
- }
- #endif
- }
- void to_view_test()
- {
- const boost::container::string s = "some text";
- boost::string_view sv(s.to_view<boost::string_view>());
- BOOST_TEST(s.data() == sv.data() && s.size() == sv.size());
- boost::string_view sv2;
- sv2 = s.to_view<boost::string_view>();
- BOOST_TEST(s.data() == sv2.data() && s.size() == sv2.size());
- const boost::string_view csv(s.to_view<boost::string_view>());
- BOOST_TEST(s.data() == csv.data() && s.size() == csv.size());
- }
- void equal_test()
- {
- const boost::string_view sv = "same text";
- const boost::string_view svd = "different text";
- const boost::container::string s = "same text";
- BOOST_TEST(sv == s);
- BOOST_TEST(s == sv);
- BOOST_TEST(!(svd == s));
- BOOST_TEST(!(s == svd));
- }
- void unequal_test()
- {
- const boost::string_view sv = "same text";
- const boost::string_view svd = "different text";
- const boost::container::string s = "same text";
- BOOST_TEST(!(sv != s));
- BOOST_TEST(!(s != sv));
- BOOST_TEST(svd != s);
- BOOST_TEST(s != svd);
- }
- void less_test()
- {
- boost::string_view sv = "0123456";
- boost::container::string s = "0123459";
- BOOST_TEST(sv < s);
- BOOST_TEST(!(s < sv));
- sv = "0123459";
- s = "0123456";
- BOOST_TEST(!(sv < s));
- BOOST_TEST(s < sv);
- sv = "0123456";
- BOOST_TEST(!(sv < s));
- BOOST_TEST(!(s < sv));
- }
- void greater_test()
- {
- boost::string_view sv = "0123459";
- boost::container::string s = "0123456";
- BOOST_TEST(sv > s);
- BOOST_TEST(!(s > sv));
- sv = "0123456";
- s = "0123459";
- BOOST_TEST(!(sv > s));
- BOOST_TEST(s > sv);
- sv = "0123459";
- BOOST_TEST(!(sv > s));
- BOOST_TEST(!(s > sv));
- }
- void less_equal_test()
- {
- boost::string_view sv = "0123456";
- boost::container::string s = "0123459";
- BOOST_TEST(sv <= s);
- BOOST_TEST(!(s <= sv));
- sv = "0123459";
- s = "0123456";
- BOOST_TEST(!(sv <= s));
- BOOST_TEST(s <= sv);
- sv = "0123456";
- BOOST_TEST(sv <= s);
- BOOST_TEST(s <= sv);
- }
- void greater_equal_test()
- {
- boost::string_view sv = "0123459";
- boost::container::string s = "0123456";
- BOOST_TEST(sv >= s);
- BOOST_TEST(!(s >= sv));
- sv = "0123456";
- s = "0123459";
- BOOST_TEST(!(sv >= s));
- BOOST_TEST(s >= sv);
- sv = "0123459";
- BOOST_TEST(sv >= s);
- BOOST_TEST(s >= sv);
- }
- void constructor_test()
- {
- boost::string_view sv = "0123459";
- boost::container::string s(sv);
- BOOST_TEST(sv == s);
- boost::container::string s2(sv, s.get_allocator());
- BOOST_TEST(sv == s);
- }
- void assignment_test()
- {
- boost::string_view sv = "0123459";
- boost::container::string s;
- s = sv;
- BOOST_TEST(sv == s);
- }
- void assign_test()
- {
- boost::string_view sv = "0123459";
- boost::container::string s;
- s.assign(sv);
- BOOST_TEST(sv == s);
- }
- void plus_equal_test()
- {
- boost::string_view sv = "23459";
- boost::container::string s("01");
- s += sv;
- BOOST_TEST(s == "0123459");
- }
- void append_test()
- {
- boost::string_view sv = "23459";
- boost::container::string s("01");
- s.append(sv);
- BOOST_TEST(s == "0123459");
- }
- void insert_test()
- {
- boost::string_view sv = "34";
- boost::container::string s("01259");
- s.insert(3u, sv);
- BOOST_TEST(s == "0123459");
- }
- void replace_test()
- {
- boost::string_view sv = "5678";
- boost::container::string s("01259");
- s.replace(2u, 2u, sv);
- BOOST_TEST(s == "0156789");
- s.replace(s.begin()+3, s.begin()+6, sv);
- BOOST_TEST(s == "01556789");
- s.replace(5u, 3u, sv, 2u, 2u);
- BOOST_TEST(s == "0155678");
- }
- void find_test()
- {
- const boost::string_view sv = "25";
- boost::container::string s("0125925123");
- BOOST_TEST(s.find(sv,4) == 5);
- }
- void rfind_test()
- {
- const boost::string_view sv = "25";
- boost::container::string s("0125925123");
- BOOST_TEST(s.rfind(sv,4) == 2);
- }
- void find_first_of_test()
- {
- const boost::string_view sv = "52";
- boost::container::string s("0125925123");
- BOOST_TEST(s.find_first_of(sv,4) == 5);
- }
- void find_last_of_test()
- {
- const boost::string_view sv = "52";
- boost::container::string s("520125925123");
- BOOST_TEST(s.find_last_of(sv,6) == 5);
- }
- void find_first_not_of_test()
- {
- const boost::string_view sv = "52";
- boost::container::string s("0125925123");
- BOOST_TEST(s.find_first_not_of(sv,2) == 4);
- }
- void find_last_not_of_test()
- {
- const boost::string_view sv = "52";
- boost::container::string s("0125925123");
- BOOST_TEST(s.find_last_not_of(sv,6) == 4);
- }
- void compare_test()
- {
- const boost::string_view sv = "52";
- boost::container::string s("0125925123");
- BOOST_TEST(s.compare(sv) < 0);
- BOOST_TEST(s.compare(boost::string_view("0125925123")) == 0);
- BOOST_TEST(s.compare(2u, s.size() - 2u, boost::string_view("25925123")) == 0);
- boost::string_view sv2("5212592512389");
- BOOST_TEST(s.compare(2u, s.size() - 2u, sv2, 3, sv2.size()-5u) == 0);
- }
- int main()
- {
- conversion_test();
- to_view_test();
- equal_test();
- unequal_test();
- less_test();
- greater_test();
- less_equal_test();
- greater_equal_test();
- constructor_test();
- assignment_test();
- assign_test();
- plus_equal_test();
- append_test();
- insert_test();
- replace_test();
- find_test();
- rfind_test();
- find_first_of_test();
- find_last_of_test();
- find_first_not_of_test();
- find_last_not_of_test();
- compare_test();
- return boost::report_errors();
- }
|