From c7dfa29f297d2b09f1a7c9c17d63f6030f094a11 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Wed, 6 Oct 2021 04:35:37 +0300 Subject: [PATCH] Add sv_starts_with_test --- include/boost/core/string_view.hpp | 12 +++++++ test/Jamfile.v2 | 1 + test/sv_starts_with_test.cpp | 50 ++++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 test/sv_starts_with_test.cpp diff --git a/include/boost/core/string_view.hpp b/include/boost/core/string_view.hpp index ae71d72..3117e7d 100644 --- a/include/boost/core/string_view.hpp +++ b/include/boost/core/string_view.hpp @@ -563,6 +563,18 @@ public: { return find( s ) != npos; } + + // relational operators + + BOOST_CONSTEXPR friend bool operator==( basic_string_view sv1, basic_string_view sv2 ) BOOST_NOEXCEPT + { + return sv1.compare( sv2 ) == 0; + } + + BOOST_CONSTEXPR friend bool operator!=( basic_string_view sv1, basic_string_view sv2 ) BOOST_NOEXCEPT + { + return sv1.compare( sv2 ) != 0; + } }; #if defined(BOOST_NO_CXX17_INLINE_VARIABLES) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index f174ba2..fb6d452 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -254,6 +254,7 @@ run sv_modifiers_test.cpp ; run sv_copy_test.cpp ; run sv_substr_test.cpp ; run sv_compare_test.cpp ; +run sv_starts_with_test.cpp ; use-project /boost/core/swap : ./swap ; build-project ./swap ; diff --git a/test/sv_starts_with_test.cpp b/test/sv_starts_with_test.cpp new file mode 100644 index 0000000..e3d69c5 --- /dev/null +++ b/test/sv_starts_with_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( sv.starts_with( boost::core::string_view() ) ); + BOOST_TEST( sv.starts_with( boost::core::string_view( "" ) ) ); + BOOST_TEST( sv.starts_with( "" ) ); + + BOOST_TEST( !sv.starts_with( boost::core::string_view( "1" ) ) ); + BOOST_TEST( !sv.starts_with( '1' ) ); + BOOST_TEST( !sv.starts_with( "1" ) ); + } + + { + boost::core::string_view sv( "123" ); + + BOOST_TEST( sv.starts_with( boost::core::string_view() ) ); + BOOST_TEST( sv.starts_with( boost::core::string_view( "" ) ) ); + BOOST_TEST( sv.starts_with( "" ) ); + + BOOST_TEST( sv.starts_with( boost::core::string_view( "1" ) ) ); + BOOST_TEST( sv.starts_with( '1' ) ); + BOOST_TEST( sv.starts_with( "1" ) ); + + BOOST_TEST( sv.starts_with( boost::core::string_view( "12" ) ) ); + BOOST_TEST( sv.starts_with( "12" ) ); + + BOOST_TEST( sv.starts_with( boost::core::string_view( "123" ) ) ); + BOOST_TEST( sv.starts_with( "123" ) ); + + BOOST_TEST( !sv.starts_with( boost::core::string_view( "1234" ) ) ); + BOOST_TEST( !sv.starts_with( "1234" ) ); + + BOOST_TEST( !sv.starts_with( boost::core::string_view( "2" ) ) ); + BOOST_TEST( !sv.starts_with( '2' ) ); + BOOST_TEST( !sv.starts_with( "2" ) ); + } + + return boost::report_errors(); +}