mirror of
https://github.com/boostorg/geometry.git
synced 2025-05-12 05:51:47 +00:00
[test][simplify] Add tests for different input and output geometries.
This commit is contained in:
parent
6a6dba760a
commit
a9364a1a88
@ -17,11 +17,12 @@
|
|||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
#include <algorithms/test_simplify.hpp>
|
#include <algorithms/test_simplify.hpp>
|
||||||
#include <boost/geometry/geometries/geometries.hpp>
|
#include <boost/geometry/geometries/geometries.hpp>
|
||||||
#include <boost/geometry/geometries/point_xy.hpp>
|
#include <boost/geometry/geometries/point_xy.hpp>
|
||||||
|
#include <boost/geometry/geometries/register/ring.hpp>
|
||||||
|
|
||||||
#include <test_geometries/wrapped_boost_array.hpp>
|
#include <test_geometries/wrapped_boost_array.hpp>
|
||||||
#include <test_common/test_point.hpp>
|
#include <test_common/test_point.hpp>
|
||||||
@ -308,6 +309,44 @@ void test_spherical()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template <typename P>
|
||||||
|
struct ring : std::vector<P>
|
||||||
|
{
|
||||||
|
ring(std::initializer_list<P> l)
|
||||||
|
: std::vector<P>(l)
|
||||||
|
{}
|
||||||
|
};
|
||||||
|
BOOST_GEOMETRY_REGISTER_RING_TEMPLATED(ring)
|
||||||
|
|
||||||
|
void test_different_types()
|
||||||
|
{
|
||||||
|
using point_t = bg::model::d2::point_xy<double>;
|
||||||
|
using ring_t = ::ring<point_t>;
|
||||||
|
using bg_ring_t = bg::model::ring<point_t>;
|
||||||
|
ring_t ring{{0, 0}, {10, 1}, {20, 2}, {30, 0}, {0, 0}};
|
||||||
|
bg_ring_t result;
|
||||||
|
bg::simplify(ring, result, 0.1);
|
||||||
|
BOOST_CHECK(boost::size(result) == 4);
|
||||||
|
BOOST_CHECK_CLOSE(bg::area(result), 30.0, 0.00001);
|
||||||
|
|
||||||
|
using var_t = boost::variant<point_t, ring_t>;
|
||||||
|
using bg_var_t = boost::variant<point_t, bg_ring_t>;
|
||||||
|
var_t var = ring;
|
||||||
|
bg_var_t result_var;
|
||||||
|
bg::simplify(var, result_var, 0.1);
|
||||||
|
BOOST_CHECK(bg::num_points(result_var) == 4);
|
||||||
|
BOOST_CHECK_CLOSE(bg::area(result_var), 30.0, 0.00001);
|
||||||
|
|
||||||
|
using gc_t = bg::model::geometry_collection<var_t>;
|
||||||
|
using bg_gc_t = bg::model::geometry_collection<bg_var_t>;
|
||||||
|
gc_t gc = {var};
|
||||||
|
bg_gc_t result_gc;
|
||||||
|
bg::simplify(gc, result_gc, 0.1);
|
||||||
|
BOOST_CHECK(bg::num_points(result_gc) == 4);
|
||||||
|
BOOST_CHECK_CLOSE(bg::area(result_gc), 30.0, 0.00001);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int test_main(int, char* [])
|
int test_main(int, char* [])
|
||||||
{
|
{
|
||||||
// Integer compiles, but simplify-process fails (due to distances)
|
// Integer compiles, but simplify-process fails (due to distances)
|
||||||
@ -319,14 +358,15 @@ int test_main(int, char* [])
|
|||||||
|
|
||||||
test_all<bg::model::d2::point_xy<float> >();
|
test_all<bg::model::d2::point_xy<float> >();
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
test_3d<bg::model::point<double, 3, bg::cs::cartesian> >();
|
test_3d<bg::model::point<double, 3, bg::cs::cartesian> >();
|
||||||
|
|
||||||
test_spherical<bg::model::point<double, 2, bg::cs::spherical_equatorial<bg::degree> > >();
|
test_spherical<bg::model::point<double, 2, bg::cs::spherical_equatorial<bg::degree> > >();
|
||||||
|
|
||||||
test_zigzag<bg::model::d2::point_xy<double> >();
|
test_zigzag<bg::model::d2::point_xy<double> >();
|
||||||
|
|
||||||
#endif
|
test_different_types();
|
||||||
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user