diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 24a5134..6b179e1 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -251,6 +251,7 @@ run sv_types_test.cpp ; run sv_construct_test.cpp ; run sv_element_access_test.cpp ; run sv_modifiers_test.cpp ; +run sv_copy_test.cpp ; use-project /boost/core/swap : ./swap ; build-project ./swap ; diff --git a/test/sv_copy_test.cpp b/test/sv_copy_test.cpp new file mode 100644 index 0000000..710718b --- /dev/null +++ b/test/sv_copy_test.cpp @@ -0,0 +1,50 @@ +// Copyright 2021 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#include +#include +#include +#include + +int main() +{ + { + boost::core::string_view sv; + + BOOST_TEST_EQ( sv.copy( 0, 0 ), 0 ); + BOOST_TEST_EQ( sv.copy( 0, 0, 0 ), 0 ); + BOOST_TEST_THROWS( sv.copy( 0, 0, 1 ), std::out_of_range ); + BOOST_TEST_THROWS( sv.copy( 0, 0, boost::core::string_view::npos ), std::out_of_range ); + } + + { + boost::core::string_view sv( "12345" ); + char buffer[ 8 ] = {}; + + BOOST_TEST_EQ( sv.copy( buffer, 0 ), 0 ); + BOOST_TEST_EQ( buffer[0], 0 ); + + BOOST_TEST_EQ( sv.copy( buffer, 0, 0 ), 0 ); + BOOST_TEST_EQ( buffer[0], 0 ); + + BOOST_TEST_EQ( sv.copy( buffer, 0, 1 ), 0 ); + BOOST_TEST_EQ( buffer[0], 0 ); + + BOOST_TEST_THROWS( sv.copy( buffer, 0, boost::core::string_view::npos ), std::out_of_range ); + BOOST_TEST_EQ( buffer[0], 0 ); + + BOOST_TEST_EQ( sv.copy( buffer, 1 ), 1 ); + BOOST_TEST_EQ( buffer[0], '1' ); + BOOST_TEST_EQ( buffer[1], 0 ); + + BOOST_TEST_EQ( sv.copy( buffer, 1, 1 ), 1 ); + BOOST_TEST_EQ( buffer[0], '2' ); + BOOST_TEST_EQ( buffer[1], 0 ); + + BOOST_TEST_EQ( sv.copy( buffer, 8 ), 5 ); + BOOST_TEST_CSTR_EQ( buffer, "12345" ); + } + + return boost::report_errors(); +}