mirror of
https://github.com/boostorg/core.git
synced 2025-05-11 13:13:55 +00:00
Add sv_conversion_test
This commit is contained in:
parent
d17313d407
commit
ddf9b5087b
@ -381,6 +381,35 @@ public:
|
||||
|
||||
// BOOST_CONSTEXPR basic_string_view& operator=( basic_string_view const& ) BOOST_NOEXCEPT & = default;
|
||||
|
||||
// conversions
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS)
|
||||
|
||||
template<class Ch2, class En = typename boost::enable_if<is_same<Ch2, Ch> >::type>
|
||||
operator std::basic_string<Ch2>() const
|
||||
{
|
||||
return std::basic_string<Ch>( data(), size() );
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
operator std::basic_string<Ch>() const
|
||||
{
|
||||
return std::basic_string<Ch>( data(), size() );
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#if !defined(BOOST_NO_CXX17_HDR_STRING_VIEW)
|
||||
|
||||
template<class Ch2, class En = typename boost::enable_if<is_same<Ch2, Ch> >::type>
|
||||
operator std::basic_string_view<Ch2>() const BOOST_NOEXCEPT
|
||||
{
|
||||
return std::basic_string_view<Ch>( data(), size() );
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
// iterator support
|
||||
|
||||
BOOST_CONSTEXPR const_iterator begin() const BOOST_NOEXCEPT
|
||||
@ -925,6 +954,198 @@ public:
|
||||
{
|
||||
return sv1.compare( sv2 ) >= 0;
|
||||
}
|
||||
|
||||
#if !defined(BOOST_NO_CXX17_HDR_STRING_VIEW)
|
||||
|
||||
// "sufficient number of additional overloads"
|
||||
|
||||
// against std::string_view
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator==( basic_string_view sv1, std::basic_string_view<Ch> sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv1.compare( sv2 ) == 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator==( std::basic_string_view<Ch> sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv1.compare( sv2 ) == 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator!=( basic_string_view sv1, std::basic_string_view<Ch> sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv1.compare( sv2 ) != 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator!=( std::basic_string_view<Ch> sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv1.compare( sv2 ) != 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator<( basic_string_view sv1, std::basic_string_view<Ch> sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv1.compare( sv2 ) < 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator<( std::basic_string_view<Ch> sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv1.compare( sv2 ) < 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator<=( basic_string_view sv1, std::basic_string_view<Ch> sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv1.compare( sv2 ) <= 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator<=( std::basic_string_view<Ch> sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv1.compare( sv2 ) <= 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator>( basic_string_view sv1, std::basic_string_view<Ch> sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv1.compare( sv2 ) > 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator>( std::basic_string_view<Ch> sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv1.compare( sv2 ) > 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator>=( basic_string_view sv1, std::basic_string_view<Ch> sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv1.compare( sv2 ) >= 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator>=( std::basic_string_view<Ch> sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv1.compare( sv2 ) >= 0;
|
||||
}
|
||||
|
||||
// against Ch const*
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator==( basic_string_view sv1, Ch const* sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv1.compare( sv2 ) == 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator==( Ch const* sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv2.compare( sv1 ) == 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator!=( basic_string_view sv1, Ch const* sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv1.compare( sv2 ) != 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator!=( Ch const* sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv2.compare( sv1 ) != 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator<( basic_string_view sv1, Ch const* sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv1.compare( sv2 ) < 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator<( Ch const* sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv2.compare( sv1 ) > 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator<=( basic_string_view sv1, Ch const* sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv1.compare( sv2 ) <= 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator<=( Ch const* sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv2.compare( sv1 ) >= 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator>( basic_string_view sv1, Ch const* sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv1.compare( sv2 ) > 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator>( Ch const* sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv2.compare( sv1 ) < 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator>=( basic_string_view sv1, Ch const* sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv1.compare( sv2 ) >= 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator>=( Ch const* sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv2.compare( sv1 ) <= 0;
|
||||
}
|
||||
|
||||
// against std::string
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator==( basic_string_view sv1, std::basic_string<Ch> const& sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv1.compare( sv2 ) == 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator==( std::basic_string<Ch> const& sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv2.compare( sv1 ) == 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator!=( basic_string_view sv1, std::basic_string<Ch> const& sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv1.compare( sv2 ) != 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator!=( std::basic_string<Ch> const& sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv2.compare( sv1 ) != 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator<( basic_string_view sv1, std::basic_string<Ch> const& sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv1.compare( sv2 ) < 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator<( std::basic_string<Ch> const& sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv2.compare( sv1 ) > 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator<=( basic_string_view sv1, std::basic_string<Ch> const& sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv1.compare( sv2 ) <= 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator<=( std::basic_string<Ch> const& sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv2.compare( sv1 ) >= 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator>( basic_string_view sv1, std::basic_string<Ch> const& sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv1.compare( sv2 ) > 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator>( std::basic_string<Ch> const& sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv2.compare( sv1 ) < 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator>=( basic_string_view sv1, std::basic_string<Ch> const& sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv1.compare( sv2 ) >= 0;
|
||||
}
|
||||
|
||||
BOOST_CXX14_CONSTEXPR friend bool operator>=( std::basic_string<Ch> const& sv1, basic_string_view sv2 ) BOOST_NOEXCEPT
|
||||
{
|
||||
return sv2.compare( sv1 ) <= 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
};
|
||||
|
||||
template<class Ch> std::basic_ostream<Ch>& operator<<( std::basic_ostream<Ch>& os, basic_string_view<Ch> str )
|
||||
|
@ -267,6 +267,7 @@ run sv_contains_test.cpp ;
|
||||
run sv_eq_test.cpp ;
|
||||
run sv_lt_test.cpp ;
|
||||
run sv_stream_insert_test.cpp ;
|
||||
run sv_conversion_test.cpp ;
|
||||
|
||||
use-project /boost/core/swap : ./swap ;
|
||||
build-project ./swap ;
|
||||
|
38
test/sv_conversion_test.cpp
Normal file
38
test/sv_conversion_test.cpp
Normal file
@ -0,0 +1,38 @@
|
||||
// Copyright 2021 Peter Dimov
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// https://www.boost.org/LICENSE_1_0.txt
|
||||
|
||||
#include <boost/core/string_view.hpp>
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <string>
|
||||
#if !defined(BOOST_NO_CXX17_HDR_STRING_VIEW)
|
||||
# include <string_view>
|
||||
#endif
|
||||
|
||||
boost::core::string_view f( boost::core::string_view const& str )
|
||||
{
|
||||
return str;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
{
|
||||
std::string s1( "123" );
|
||||
std::string s2 = f( s1 );
|
||||
|
||||
BOOST_TEST_EQ( s1, s2 );
|
||||
}
|
||||
|
||||
#if !defined(BOOST_NO_CXX17_HDR_STRING_VIEW)
|
||||
|
||||
{
|
||||
std::string_view s1( "123" );
|
||||
std::string_view s2 = f( s1 );
|
||||
|
||||
BOOST_TEST_EQ( s1, s2 );
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user