From 016ae92ecfa981182de9573b992f46fc2dd71fc0 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Mon, 4 Oct 2021 17:33:04 +0300 Subject: [PATCH] Add sv_element_access_test --- test/Jamfile.v2 | 1 + test/sv_element_access_test.cpp | 41 +++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 test/sv_element_access_test.cpp diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 1ed8fad..31945d0 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -249,6 +249,7 @@ run type_name_test.cpp ; run sv_types_test.cpp ; run sv_construct_test.cpp ; +run sv_element_access_test.cpp ; use-project /boost/core/swap : ./swap ; build-project ./swap ; diff --git a/test/sv_element_access_test.cpp b/test/sv_element_access_test.cpp new file mode 100644 index 0000000..12df69b --- /dev/null +++ b/test/sv_element_access_test.cpp @@ -0,0 +1,41 @@ +// 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() +{ + { + boost::core::string_view sv( "12345" ); + + for( std::size_t i = 0; i < 5; ++i ) + { + BOOST_TEST_EQ( &sv[ i ], sv.data() + i ); + BOOST_TEST_EQ( &sv.at( i ), sv.data() + i ); + } + + BOOST_TEST_THROWS( sv.at( 5 ), std::out_of_range ); + BOOST_TEST_THROWS( sv.at( boost::core::string_view::npos ), std::out_of_range ); + } + + { + boost::core::string_view sv; + + BOOST_TEST_THROWS( sv.at( 0 ), std::out_of_range ); + BOOST_TEST_THROWS( sv.at( 1 ), std::out_of_range ); + BOOST_TEST_THROWS( sv.at( boost::core::string_view::npos ), std::out_of_range ); + } + + { + boost::core::string_view sv( "12345", 0 ); + + BOOST_TEST_THROWS( sv.at( 0 ), std::out_of_range ); + BOOST_TEST_THROWS( sv.at( 1 ), std::out_of_range ); + BOOST_TEST_THROWS( sv.at( boost::core::string_view::npos ), std::out_of_range ); + } + + return boost::report_errors(); +}