[test][union] Modify geographic union test wrt recent changes (by default invalid polygons are not returned).

This commit is contained in:
Adam Wulkiewicz 2017-11-23 00:09:05 +01:00
parent fde5475144
commit 88cb906b53

View File

@ -59,12 +59,25 @@ void test_geographic_one(std::string const& wkt1, std::string const& wkt2,
multipolygon result;
#ifdef BOOST_GEOMETRY_UNION_THROW_INVALID_OUTPUT_EXCEPTION
if (expected_area >= 0)
{
enum test_mode { expect_valid, expect_empty, expect_exception };
#if defined(BOOST_GEOMETRY_UNION_THROW_INVALID_OUTPUT_EXCEPTION)
test_mode mode = expected_area >= 0 ? expect_valid : expect_exception;
#elif defined(BOOST_GEOMETRY_UNION_RETURN_INVALID)
test_mode mode = expect_valid;
#else
{
// default
test_mode mode = expected_area >= 0 ? expect_valid : expect_empty;
#endif
if (mode == expect_exception)
{
BOOST_CHECK_THROW(boost::geometry::union_(p1, p2, result, is),
bg::invalid_output_exception);
}
else
{
boost::geometry::union_(p1, p2, result, is);
double result_area = bg::area(result, as);
@ -76,18 +89,19 @@ void test_geographic_one(std::string const& wkt1, std::string const& wkt2,
std::size_t result_interiors = std::for_each(boost::begin(result),
boost::end(result),
interiors_counter()).count;
BOOST_CHECK_EQUAL(result_count, count);
BOOST_CHECK_EQUAL(result_exterior_points, exterior_points_count);
BOOST_CHECK_EQUAL(result_interiors, interiors_count);
BOOST_CHECK_CLOSE(result_area, expected_area, 0.001);
if (mode == expect_valid)
{
BOOST_CHECK_EQUAL(result_count, count);
BOOST_CHECK_EQUAL(result_exterior_points, exterior_points_count);
BOOST_CHECK_EQUAL(result_interiors, interiors_count);
BOOST_CHECK_CLOSE(result_area, expected_area, 0.001);
}
else
{
BOOST_CHECK_EQUAL(result_count, 0);
BOOST_CHECK_EQUAL(result_area, 0);
}
}
#ifdef BOOST_GEOMETRY_UNION_THROW_INVALID_OUTPUT_EXCEPTION
else
{
BOOST_CHECK_THROW(boost::geometry::union_(p1, p2, result, is),
bg::invalid_output_exception);
}
#endif
}