////////////////////////////////////////////////////////////////////////////// // // (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 #include #include 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_TEST(s.data() == sv.data() && s.size() == sv.size()); boost::string_view sv2; sv2 = s.to_view(); BOOST_TEST(s.data() == sv2.data() && s.size() == sv2.size()); const boost::string_view csv(s.to_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(); }