diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 31945d0..24a5134 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -250,6 +250,7 @@ run type_name_test.cpp ; run sv_types_test.cpp ; run sv_construct_test.cpp ; run sv_element_access_test.cpp ; +run sv_modifiers_test.cpp ; use-project /boost/core/swap : ./swap ; build-project ./swap ; diff --git a/test/sv_modifiers_test.cpp b/test/sv_modifiers_test.cpp new file mode 100644 index 0000000..d292594 --- /dev/null +++ b/test/sv_modifiers_test.cpp @@ -0,0 +1,127 @@ +// Copyright 2021 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#include +#include +#include + +int main() +{ + { + char const* s1 = "12345"; + char const* s2 = ""; + + boost::core::string_view sv1( s1 ); + boost::core::string_view sv2( s2 ); + + sv1.swap( sv2 ); + + BOOST_TEST_EQ( sv1.data(), s2 ); + BOOST_TEST_EQ( sv1.size(), 0 ); + + BOOST_TEST_EQ( sv2.data(), s1 ); + BOOST_TEST_EQ( sv2.size(), 5); + } + + { + boost::core::string_view sv; + + char const* data = sv.data(); + std::size_t size = sv.size(); + + sv.remove_prefix( 0 ); + + BOOST_TEST_EQ( sv.data(), data ); + BOOST_TEST_EQ( sv.size(), size ); + + sv.remove_suffix( 0 ); + + BOOST_TEST_EQ( sv.data(), data ); + BOOST_TEST_EQ( sv.size(), size ); + } + + { + boost::core::string_view sv( "" ); + + char const* data = sv.data(); + std::size_t size = sv.size(); + + sv.remove_prefix( 0 ); + + BOOST_TEST_EQ( sv.data(), data ); + BOOST_TEST_EQ( sv.size(), size ); + + sv.remove_suffix( 0 ); + + BOOST_TEST_EQ( sv.data(), data ); + BOOST_TEST_EQ( sv.size(), size ); + } + + { + boost::core::string_view sv( "12345" ); + + char const* data = sv.data(); + std::size_t size = sv.size(); + + sv.remove_prefix( 0 ); + + BOOST_TEST_EQ( sv.data(), data ); + BOOST_TEST_EQ( sv.size(), size ); + + sv.remove_suffix( 0 ); + + BOOST_TEST_EQ( sv.data(), data ); + BOOST_TEST_EQ( sv.size(), size ); + } + + { + boost::core::string_view sv( "12345" ); + + char const* data = sv.data(); + std::size_t size = sv.size(); + + sv.remove_prefix( 2 ); + + BOOST_TEST_EQ( sv.data(), data + 2 ); + BOOST_TEST_EQ( sv.size(), size - 2 ); + } + + { + boost::core::string_view sv( "12345" ); + + char const* data = sv.data(); + std::size_t size = sv.size(); + + sv.remove_prefix( 5 ); + + BOOST_TEST_EQ( sv.data(), data + 5 ); + BOOST_TEST_EQ( sv.size(), size - 5 ); + } + + { + boost::core::string_view sv( "12345" ); + + char const* data = sv.data(); + std::size_t size = sv.size(); + + sv.remove_suffix( 2 ); + + BOOST_TEST_EQ( sv.data(), data ); + BOOST_TEST_EQ( sv.size(), size - 2 ); + } + + { + boost::core::string_view sv( "12345" ); + + char const* data = sv.data(); + std::size_t size = sv.size(); + + sv.remove_suffix( 5 ); + + BOOST_TEST_EQ( sv.data(), data ); + BOOST_TEST_EQ( sv.size(), size - 5 ); + } + + return boost::report_errors(); +}