diff --git a/test/Jamfile b/test/Jamfile index f114533..766c254 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -13,3 +13,5 @@ REQ = ; #[ requires cxx11_variadic_templates cxx11_template_aliases cxx11_declty run variant_size.cpp : : : $(REQ) ; run variant_alternative.cpp : : : $(REQ) ; +run holds_alternative.cpp : : : $(REQ) ; +run holds_alternative_cx.cpp : : : $(REQ) ; diff --git a/test/holds_alternative.cpp b/test/holds_alternative.cpp new file mode 100644 index 0000000..4931f40 --- /dev/null +++ b/test/holds_alternative.cpp @@ -0,0 +1,78 @@ + +// Copyright 2017 Peter Dimov. +// +// Distributed under the Boost Software License, Version 1.0. +// +// See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt + +#include +#include +#include + +using namespace boost::variant2; + +int main() +{ + { + variant v; + BOOST_TEST( holds_alternative( v ) ); + } + + { + variant v; + BOOST_TEST( holds_alternative( v ) ); + BOOST_TEST( !holds_alternative( v ) ); + } + + { + variant v( 3.14f ); + BOOST_TEST( !holds_alternative( v ) ); + BOOST_TEST( holds_alternative( v ) ); + } + + { + variant v; + BOOST_TEST( holds_alternative( v ) ); + } + + { + variant v( 3.14f ); + BOOST_TEST( holds_alternative( v ) ); + } + + { + variant v; + BOOST_TEST( holds_alternative( v ) ); + BOOST_TEST( !holds_alternative( v ) ); + BOOST_TEST( !holds_alternative( v ) ); + } + + { + variant v( 3.14f ); + BOOST_TEST( !holds_alternative( v ) ); + BOOST_TEST( holds_alternative( v ) ); + BOOST_TEST( !holds_alternative( v ) ); + } + + { + variant v( "text" ); + BOOST_TEST( !holds_alternative( v ) ); + BOOST_TEST( !holds_alternative( v ) ); + BOOST_TEST( holds_alternative( v ) ); + } + + { + variant v( 3.14f ); + BOOST_TEST( holds_alternative( v ) ); + BOOST_TEST( !holds_alternative( v ) ); + } + + { + variant v( "text" ); + BOOST_TEST( !holds_alternative( v ) ); + BOOST_TEST( holds_alternative( v ) ); + } + + return boost::report_errors(); +} diff --git a/test/holds_alternative_cx.cpp b/test/holds_alternative_cx.cpp new file mode 100644 index 0000000..c2bdc0a --- /dev/null +++ b/test/holds_alternative_cx.cpp @@ -0,0 +1,43 @@ + +// Copyright 2017 Peter Dimov. +// +// Distributed under the Boost Software License, Version 1.0. +// +// See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt + +#include + +using namespace boost::variant2; + +#define STATIC_ASSERT(...) static_assert(__VA_ARGS__, #__VA_ARGS__) + +int main() +{ + { + constexpr variant v; + STATIC_ASSERT( holds_alternative( v ) ); + } + + { + constexpr variant v; + STATIC_ASSERT( holds_alternative( v ) ); + STATIC_ASSERT( !holds_alternative( v ) ); + } + + { + constexpr variant v( 3.14f ); + STATIC_ASSERT( !holds_alternative( v ) ); + STATIC_ASSERT( holds_alternative( v ) ); + } + + { + constexpr variant v; + STATIC_ASSERT( holds_alternative( v ) ); + } + + { + constexpr variant v( 3.14f ); + STATIC_ASSERT( holds_alternative( v ) ); + } +} diff --git a/test/variant_alternative.cpp b/test/variant_alternative.cpp index 44e2a7a..e5a9fa7 100644 --- a/test/variant_alternative.cpp +++ b/test/variant_alternative.cpp @@ -20,7 +20,6 @@ template using var_alt_t = variant_alternative_t; int main() { - BOOST_TEST_TRAIT_TRUE((std::is_same>, void>)); BOOST_TEST_TRAIT_TRUE((std::is_same const>, void const>)); BOOST_TEST_TRAIT_TRUE((std::is_same volatile>, void volatile>)); diff --git a/test/variant_size.cpp b/test/variant_size.cpp index 3d59682..b348418 100644 --- a/test/variant_size.cpp +++ b/test/variant_size.cpp @@ -20,7 +20,6 @@ template using var_size_t = mp_size_t::value>; int main() { - BOOST_TEST_EQ( (variant_size>::value), 0 ); BOOST_TEST_EQ( (variant_size const>::value), 0 ); BOOST_TEST_EQ( (variant_size volatile>::value), 0 );