// Boost.Geometry // Unit Test // Copyright (c) 2019-2020 Oracle and/or its affiliates. // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle // Use, modification and distribution is subject to 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 namespace bt = boost::tuples; namespace bgt = boost::geometry::tuples; namespace bm = boost::mpl; template struct is_double : std::is_same {}; template struct is_float : std::is_same {}; template struct is_boost_tuple : std::integral_constant {}; template struct is_boost_tuple > : std::integral_constant {}; template struct is_boost_tuples_cons : std::integral_constant {}; template struct is_boost_tuples_cons > : std::integral_constant {}; template struct is_std_pair : std::integral_constant {}; template struct is_std_pair > : std::integral_constant {}; template struct is_std_tuple : std::integral_constant {}; template struct is_std_tuple > : std::integral_constant {}; template void test_all() { typedef Tuple tuple_id; tuple_id tup_id(1, 2.0); BOOST_CHECK_EQUAL((bgt::get<0>(tup_id)), 1); BOOST_CHECK_EQUAL((bgt::get<1>(tup_id)), 2.0); BOOST_CHECK_EQUAL((bgt::size::value), 2u); BOOST_CHECK_EQUAL((bgt::find_index_if::value), 1u); BOOST_CHECK((std::is_same::type, double>::value)); BOOST_CHECK_EQUAL((bgt::find_index_if::value), 2u); BOOST_CHECK((std::is_same::type, bg::tuples::detail::null_type>::value)); typedef typename bgt::push_back::type tuple_idf; tuple_idf tup_idf = bgt::push_back::apply(tup_id, 3.0f); BOOST_CHECK_EQUAL((bgt::get<0>(tup_idf)), 1); BOOST_CHECK_EQUAL((bgt::get<1>(tup_idf)), 2.0); BOOST_CHECK_EQUAL((bgt::get<2>(tup_idf)), 3.0f); BOOST_CHECK_EQUAL((bgt::size::value), 3u); BOOST_CHECK_EQUAL((bgt::find_index_if::value), 2u); BOOST_CHECK((std::is_same::type, float>::value)); BOOST_CHECK(( (is_boost_tuple::value && is_boost_tuples_cons::value) || (!is_boost_tuple::value && is_std_tuple::value) )); tup_idf = bgt::push_back::apply(std::move(tup_id), 3.0f); BOOST_CHECK_EQUAL((bgt::get<0>(tup_idf)), 1); BOOST_CHECK_EQUAL((bgt::get<1>(tup_idf)), 2.0); BOOST_CHECK_EQUAL((bgt::get<2>(tup_idf)), 3.0f); } int test_main(int, char* []) { test_all >(); test_all >(); test_all >(); return 0; }