// See http://www.boost.org for updates, documentation, and revision history.
//-----------------------------------------------------------------------------
//
-// Copyright (c) 2014-2015 Antony Polukhin
+// Copyright (c) 2014-2019 Antony Polukhin
//
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
#include "boost/config.hpp"
-#include "boost/test/minimal.hpp"
+#include "boost/core/lightweight_test.hpp"
#include "boost/variant.hpp"
#include "boost/variant/multivisitors.hpp"
#include "boost/lexical_cast.hpp"
using namespace has_result_type_tests;
using boost::detail::variant::has_result_type;
- BOOST_CHECK(has_result_type<s1>::value);
- BOOST_CHECK(has_result_type<s2>::value);
- BOOST_CHECK(has_result_type<s3>::value);
- BOOST_CHECK(!has_result_type<s4>::value);
- BOOST_CHECK(has_result_type<s5>::value);
- BOOST_CHECK(has_result_type<s6>::value);
- BOOST_CHECK(has_result_type<s7>::value);
- BOOST_CHECK(has_result_type<s8>::value);
- BOOST_CHECK(has_result_type<s9>::value);
+ BOOST_TEST(has_result_type<s1>::value);
+ BOOST_TEST(has_result_type<s2>::value);
+ BOOST_TEST(has_result_type<s3>::value);
+ BOOST_TEST(!has_result_type<s4>::value);
+ BOOST_TEST(has_result_type<s5>::value);
+ BOOST_TEST(has_result_type<s6>::value);
+ BOOST_TEST(has_result_type<s7>::value);
+ BOOST_TEST(has_result_type<s8>::value);
+ BOOST_TEST(has_result_type<s9>::value);
#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
- BOOST_CHECK(has_result_type<s10>::value);
+ BOOST_TEST(has_result_type<s10>::value);
#endif
- BOOST_CHECK(has_result_type<s11>::value);
- BOOST_CHECK(has_result_type<s12>::value);
- BOOST_CHECK(has_result_type<s13>::value);
- BOOST_CHECK(has_result_type<s14>::value);
- BOOST_CHECK(has_result_type<s15>::value);
- BOOST_CHECK(has_result_type<s16>::value);
+ BOOST_TEST(has_result_type<s11>::value);
+ BOOST_TEST(has_result_type<s12>::value);
+ BOOST_TEST(has_result_type<s13>::value);
+ BOOST_TEST(has_result_type<s14>::value);
+ BOOST_TEST(has_result_type<s15>::value);
+ BOOST_TEST(has_result_type<s16>::value);
}
struct lex_streamer_explicit: boost::static_visitor<std::string> {
lex_streamer_explicit visitor_ref;
// Must return instance of std::string
- BOOST_CHECK(boost::apply_visitor(visitor_ref, v2).c_str() == std::string("10"));
- BOOST_CHECK(boost::apply_visitor(visitor_ref, v2, v1).c_str() == std::string("100"));
+ BOOST_TEST(boost::apply_visitor(visitor_ref, v2).c_str() == std::string("10"));
+ BOOST_TEST(boost::apply_visitor(visitor_ref, v2, v1).c_str() == std::string("100"));
}
void run()
{
- BOOST_CHECK(true);
+ BOOST_TEST(true);
}
void run2()
{
- BOOST_CHECK(true);
+ BOOST_TEST(true);
}
void run3()
{
- BOOST_CHECK(true);
+ BOOST_TEST(true);
}
#else
std::string res;
template <class T>
- const char* operator()(const T& val) const {
+ const char* operator()(const T& /*val*/) const {
return "fail";
}
template <class T1, class T2>
- const char* operator()(const T1& v1, const T2& v2) const {
+ const char* operator()(const T1& /*v1*/, const T2& /*v2*/) const {
return "fail2";
}
template <class T1, class T2, class T3>
- const char* operator()(const T1& v1, const T2& v2, const T3& v3) const {
+ const char* operator()(const T1& /*v1*/, const T2& /*v2*/, const T3& /*v3*/) const {
return "fail3";
}
};
#ifndef BOOST_VARIANT_DO_NOT_USE_VARIADIC_TEMPLATES
-# define BOOST_CHECK_IF_HAS_VARIADIC(x) BOOST_CHECK(x)
+# define BOOST_TEST_IF_HAS_VARIADIC(x) BOOST_TEST(x)
#else
-# define BOOST_CHECK_IF_HAS_VARIADIC(x) /**/
+# define BOOST_TEST_IF_HAS_VARIADIC(x) /**/
#endif
void run()
variant_type v1(1), v2("10"), v3(100.0);
lex_streamer lex_streamer_visitor;
- BOOST_CHECK(boost::apply_visitor(lex_streamer(), v1) == "1");
- BOOST_CHECK_IF_HAS_VARIADIC(boost::apply_visitor(lex_streamer_visitor)(v1) == "1");
- BOOST_CHECK(boost::apply_visitor(lex_streamer(), v2) == "10");
- BOOST_CHECK_IF_HAS_VARIADIC(boost::apply_visitor(lex_streamer_visitor)(v2) == "10");
+ BOOST_TEST(boost::apply_visitor(lex_streamer(), v1) == "1");
+ BOOST_TEST_IF_HAS_VARIADIC(boost::apply_visitor(lex_streamer_visitor)(v1) == "1");
+ BOOST_TEST(boost::apply_visitor(lex_streamer(), v2) == "10");
+ BOOST_TEST_IF_HAS_VARIADIC(boost::apply_visitor(lex_streamer_visitor)(v2) == "10");
#ifndef BOOST_NO_CXX14_GENERIC_LAMBDAS
- BOOST_CHECK(boost::apply_visitor([](auto v) { return boost::lexical_cast<std::string>(v); }, v1) == "1");
- BOOST_CHECK(boost::apply_visitor([](auto v) { return boost::lexical_cast<std::string>(v); }, v2) == "10");
+ BOOST_TEST(boost::apply_visitor([](auto v) { return boost::lexical_cast<std::string>(v); }, v1) == "1");
+ BOOST_TEST(boost::apply_visitor([](auto v) { return boost::lexical_cast<std::string>(v); }, v2) == "10");
// Retun type must be the same in all instances, so this code does not compile
//boost::variant<int, short, unsigned> v_diff_types(1);
- //BOOST_CHECK(boost::apply_visitor([](auto v) { return v; }, v_diff_types) == 1);
+ //BOOST_TEST(boost::apply_visitor([](auto v) { return v; }, v_diff_types) == 1);
boost::apply_visitor([](auto v) { std::cout << v << std::endl; }, v1);
boost::apply_visitor([](auto v) { std::cout << v << std::endl; }, v2);
#endif
lex_streamer2 visitor_ref;
- BOOST_CHECK(boost::apply_visitor(visitor_ref, v1) == "1");
- BOOST_CHECK(boost::apply_visitor(visitor_ref, v2) == "10");
+ BOOST_TEST(boost::apply_visitor(visitor_ref, v1) == "1");
+ BOOST_TEST(boost::apply_visitor(visitor_ref, v2) == "10");
#ifndef BOOST_VARIANT_DO_NOT_USE_VARIADIC_TEMPLATES
std::string& ref_to_string = boost::apply_visitor(visitor_ref, v1);
- BOOST_CHECK(ref_to_string == "1");
+ BOOST_TEST(ref_to_string == "1");
#endif
lex_streamer_void lex_streamer_void_visitor;
boost::apply_visitor(lex_streamer_void(), v1);
variant_type v1(1), v2("10"), v3(100.0);
lex_combine lex_combine_visitor;
- BOOST_CHECK(boost::apply_visitor(lex_combine(), v1, v2) == "1+10");
- BOOST_CHECK(boost::apply_visitor(lex_combine(), v2, v1) == "10+1");
- BOOST_CHECK_IF_HAS_VARIADIC(boost::apply_visitor(lex_combine_visitor)(v2, v1) == "10+1");
+ BOOST_TEST(boost::apply_visitor(lex_combine(), v1, v2) == "1+10");
+ BOOST_TEST(boost::apply_visitor(lex_combine(), v2, v1) == "10+1");
+ BOOST_TEST_IF_HAS_VARIADIC(boost::apply_visitor(lex_combine_visitor)(v2, v1) == "10+1");
#ifndef BOOST_NO_CXX14_GENERIC_LAMBDAS
- BOOST_CHECK(
+ BOOST_TEST(
boost::apply_visitor(
[](auto v1, auto v2) {
return boost::lexical_cast<std::string>(v1) + "+"
, v2
) == "1+10"
);
- BOOST_CHECK(
+ BOOST_TEST(
boost::apply_visitor(
[](auto v1, auto v2) {
return boost::lexical_cast<std::string>(v1) + "+"
lex_streamer2 visitor_ref;
- BOOST_CHECK(boost::apply_visitor(visitor_ref, v1, v2) == "1+10");
- BOOST_CHECK(boost::apply_visitor(visitor_ref, v2, v1) == "10+1");
+ BOOST_TEST(boost::apply_visitor(visitor_ref, v1, v2) == "1+10");
+ BOOST_TEST(boost::apply_visitor(visitor_ref, v2, v1) == "10+1");
#ifndef BOOST_VARIANT_DO_NOT_USE_VARIADIC_TEMPLATES
std::string& ref_to_string = boost::apply_visitor(visitor_ref)(v1, v2);
- BOOST_CHECK(ref_to_string == "1+10");
+ BOOST_TEST(ref_to_string == "1+10");
#endif
boost::apply_visitor(lex_streamer_void(), v1, v2);
boost::ignore_unused(lex_combine_visitor, visitor_ref);
}
-#undef BOOST_CHECK_IF_HAS_VARIADIC
+#undef BOOST_TEST_IF_HAS_VARIADIC
void run3()
{
variant_type v1(1), v2("10"), v3(100);
lex_combine lex_combine_visitor;
- BOOST_CHECK(boost::apply_visitor(lex_combine(), v1, v2, v3) == "1+10+100");
- BOOST_CHECK(boost::apply_visitor(lex_combine(), v2, v1, v3) == "10+1+100");
- BOOST_CHECK(boost::apply_visitor(lex_combine_visitor)(v2, v1, v3) == "10+1+100");
+ BOOST_TEST(boost::apply_visitor(lex_combine(), v1, v2, v3) == "1+10+100");
+ BOOST_TEST(boost::apply_visitor(lex_combine(), v2, v1, v3) == "10+1+100");
+ BOOST_TEST(boost::apply_visitor(lex_combine_visitor)(v2, v1, v3) == "10+1+100");
#ifndef BOOST_NO_CXX14_GENERIC_LAMBDAS
- BOOST_CHECK(
+ BOOST_TEST(
boost::apply_visitor(
[](auto v1, auto v2, auto v3) {
return boost::lexical_cast<std::string>(v1) + "+"
, v3
) == "1+10+100"
);
- BOOST_CHECK(
+ BOOST_TEST(
boost::apply_visitor(
[](auto v1, auto v2, auto v3) {
return boost::lexical_cast<std::string>(v1) + "+"
lex_streamer2 visitor_ref;
- BOOST_CHECK(boost::apply_visitor(visitor_ref, v1, v2) == "1+10");
- BOOST_CHECK(boost::apply_visitor(visitor_ref)(v2, v1) == "10+1");
+ BOOST_TEST(boost::apply_visitor(visitor_ref, v1, v2) == "1+10");
+ BOOST_TEST(boost::apply_visitor(visitor_ref)(v2, v1) == "10+1");
std::string& ref_to_string = boost::apply_visitor(visitor_ref, v1, v2);
- BOOST_CHECK(ref_to_string == "1+10");
+ BOOST_TEST(ref_to_string == "1+10");
lex_streamer_void lex_streamer_void_visitor;
boost::apply_visitor(lex_streamer_void(), v1, v2, v1);
#endif
-int test_main(int , char* [])
+int main()
{
run_explicit();
run();
run3();
test_has_result_type_triat();
- return 0;
+ return boost::report_errors();
}