1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
#include <tut/tut.hpp>
// geos
#include <geos_c.h>
#include "capi_test_utils.h"
namespace tut {
struct test_capigeosgeom_clone : public capitest::utility {};
typedef test_group<test_capigeosgeom_clone> group;
typedef group::object object;
group test_capigeosgeom_clone_group("capi::GEOSGeom_clone");
template<>
template<>
void object::test<1>
()
{
geom1_ = GEOSGeomFromWKT("LINESTRING (3 8, -12 -4)");
GEOSSetSRID(geom1_, 32145);
int data = 500;
GEOSGeom_setUserData(geom1_, &data);
geom2_ = GEOSGeom_clone(geom1_);
ensure_geometry_equals(geom1_, geom2_);
ensure(GEOSGeom_getCoordSeq(geom1_) != GEOSGeom_getCoordSeq(geom2_)); // deep copy
ensure_equals(GEOSGetSRID(geom2_), 32145);
ensure(GEOSGeom_getUserData(geom2_) == nullptr); // userData not transferred
}
template<>
template<>
void object::test<2>
()
{
input_ = GEOSGeomFromWKT("CIRCULARSTRING (0 0, 1 1, 2 0)");
result_ = GEOSGeom_clone(input_);
ensure_equals(toWKT(result_), "CIRCULARSTRING (0 0, 1 1, 2 0)");
}
} // namespace tut
|