[test] Fix static asserts by passing types.

This commit is contained in:
Adam Wulkiewicz 2021-07-30 19:06:29 +02:00
parent 789281a5d1
commit efff23114a
4 changed files with 62 additions and 71 deletions

View File

@ -184,19 +184,18 @@ struct test_variant_different_default_strategy
variant_type v1, v2; variant_type v1, v2;
using variant_cdistance_t = typename bg::comparable_distance_result
<
variant_type, variant_type, bg::default_strategy
>::type;
using cdistance_t = typename bg::comparable_distance_result
<
point_type, point_type, bg::default_strategy
>::type;
BOOST_GEOMETRY_STATIC_ASSERT( BOOST_GEOMETRY_STATIC_ASSERT(
(std::is_same (std::is_same<variant_cdistance_t, cdistance_t>::value),
< "Unexpected result type",
typename bg::comparable_distance_result variant_cdistance_t, cdistance_t);
<
variant_type, variant_type, bg::default_strategy
>::type,
typename bg::comparable_distance_result
<
point_type, point_type, bg::default_strategy
>::type
>::value),
"Unexpected result type");
// Default strategy // Default strategy
v1 = point; v1 = point;
@ -257,27 +256,23 @@ struct test_variant_same_default_strategy
variant_type v1, v2; variant_type v1, v2;
using variant_cdistance_t = typename bg::comparable_distance_result
<
variant_type, variant_type, bg::default_strategy
>::type;
BOOST_GEOMETRY_STATIC_ASSERT( BOOST_GEOMETRY_STATIC_ASSERT(
(std::is_same (std::is_same<variant_cdistance_t, ExpectedResultType>::value),
< "Unexpected result type",
typename bg::comparable_distance_result variant_cdistance_t, ExpectedResultType);
<
variant_type, variant_type, bg::default_strategy
>::type,
ExpectedResultType
>::value),
"Unexpected result type");
using cdistance_t = typename bg::comparable_distance_result
<
point_type, point_type, bg::default_strategy
>::type;
BOOST_GEOMETRY_STATIC_ASSERT( BOOST_GEOMETRY_STATIC_ASSERT(
(std::is_same (std::is_same<cdistance_t, ExpectedResultType>::value),
< "Unexpected result type",
typename bg::comparable_distance_result cdistance_t, ExpectedResultType);
<
point_type, point_type, bg::default_strategy
>::type,
ExpectedResultType
>::value),
"Unexpected result type");
// Default strategy // Default strategy
v1 = point; v1 = point;
@ -348,27 +343,23 @@ struct test_variant_with_strategy
strategy_type strategy; strategy_type strategy;
using variant_cdistance_t = typename bg::comparable_distance_result
<
variant_type, variant_type, strategy_type
>::type;
BOOST_GEOMETRY_STATIC_ASSERT( BOOST_GEOMETRY_STATIC_ASSERT(
(std::is_same (std::is_same<variant_cdistance_t, ExpectedResultType>::value),
< "Unexpected result type",
typename bg::comparable_distance_result variant_cdistance_t, ExpectedResultType);
<
variant_type, variant_type, strategy_type
>::type,
ExpectedResultType
>::value),
"Unexpected result type");
using cdistance_t = typename bg::comparable_distance_result
<
segment_type, linestring_type, strategy_type
>::type;
BOOST_GEOMETRY_STATIC_ASSERT( BOOST_GEOMETRY_STATIC_ASSERT(
(std::is_same (std::is_same<cdistance_t, ExpectedResultType>::value),
< "Unexpected result type",
typename bg::comparable_distance_result cdistance_t, ExpectedResultType);
<
segment_type, linestring_type, strategy_type
>::type,
ExpectedResultType
>::value),
"Unexpected result type");
// Passed strategy // Passed strategy
v1 = seg; v1 = seg;
@ -462,17 +453,14 @@ struct test_variant_boxes
typename bg::util::detail::default_integral::type typename bg::util::detail::default_integral::type
>::type expected_result_type; >::type expected_result_type;
using variant_cdistance_t = typename bg::comparable_distance_result
<
variant_type, variant_type, bg::default_strategy
>::type;
BOOST_GEOMETRY_STATIC_ASSERT( BOOST_GEOMETRY_STATIC_ASSERT(
(std::is_same (std::is_same<variant_cdistance_t, expected_result_type>::value),
< "Unexpected result type",
typename bg::comparable_distance_result variant_cdistance_t, expected_result_type);
<
variant_type, variant_type, bg::default_strategy
>::type,
expected_result_type
>::value),
"Unexpected result type"
);
// Default strategy // Default strategy
check_result<T>::apply(bg::comparable_distance(v1, v2), check_result<T>::apply(bg::comparable_distance(v1, v2),

View File

@ -84,7 +84,8 @@ void test_distance_point()
typedef typename services::return_type<taxicab_distance, P, P>::type cab_return_type; typedef typename services::return_type<taxicab_distance, P, P>::type cab_return_type;
BOOST_GEOMETRY_STATIC_ASSERT( BOOST_GEOMETRY_STATIC_ASSERT(
(std::is_same<cab_return_type, typename bg::coordinate_type<P>::type>::value), (std::is_same<cab_return_type, typename bg::coordinate_type<P>::type>::value),
"Unexpected result type"); "Unexpected result type",
cab_return_type, typename bg::coordinate_type<P>::type);
taxicab_distance tcd; taxicab_distance tcd;
cab_return_type d = bg::distance(p1, p2, tcd); cab_return_type d = bg::distance(p1, p2, tcd);
@ -460,16 +461,14 @@ void test_variant()
variant_type v1, v2; variant_type v1, v2;
using distance_t = typename bg::distance_result
<
variant_type, variant_type, bg::default_strategy
>::type;
BOOST_GEOMETRY_STATIC_ASSERT( BOOST_GEOMETRY_STATIC_ASSERT(
(std::is_same (std::is_same<distance_t, double>::value),
< "Unexpected result type",
typename bg::distance_result distance_t, double);
<
variant_type, variant_type, bg::default_strategy
>::type,
double
>::value),
"Unexpected result type");
// Default strategy // Default strategy
v1 = point; v1 = point;

View File

@ -59,9 +59,11 @@ struct distance_from_bg
Strategy const& strategy) Strategy const& strategy)
{ {
BOOST_GEOMETRY_STATIC_ASSERT((use_distance_from_bg<Geometry1>::value), BOOST_GEOMETRY_STATIC_ASSERT((use_distance_from_bg<Geometry1>::value),
"Unexpected kind of Geometry1"); "Unexpected kind of Geometry1",
Geometry1);
BOOST_GEOMETRY_STATIC_ASSERT((use_distance_from_bg<Geometry2>::value), BOOST_GEOMETRY_STATIC_ASSERT((use_distance_from_bg<Geometry2>::value),
"Unexpected kind of Geometry1"); "Unexpected kind of Geometry2",
Geometry2);
return geometry::distance(geometry1, geometry2, strategy); return geometry::distance(geometry1, geometry2, strategy);
} }

View File

@ -64,7 +64,9 @@ template <typename Argument, typename Result>
inline void check_sqrt(Argument const& arg, Result const& result) inline void check_sqrt(Argument const& arg, Result const& result)
{ {
using return_type = typename bg::math::detail::square_root<Argument>::return_type; using return_type = typename bg::math::detail::square_root<Argument>::return_type;
BOOST_GEOMETRY_STATIC_ASSERT((std::is_same<return_type, Result>::value), "Wrong return type"); BOOST_GEOMETRY_STATIC_ASSERT((std::is_same<return_type, Result>::value),
"Wrong return type",
return_type, Result);
#ifdef BOOST_GEOMETRY_TEST_DEBUG #ifdef BOOST_GEOMETRY_TEST_DEBUG
std::cout << "testing: " << typeid(Result).name() std::cout << "testing: " << typeid(Result).name()