void object::test<3>() { // Single-element sequence of coordiantes CoordArrayPtr pseq = 0; try { pseq = new geos::geom::CoordinateArraySequence(); ensure( "sequence is null pointer.", pseq != 0 ); pseq->add(geos::geom::Coordinate(0, 0, 0)); ensure_equals( pseq->size(), 1u ); // Create incomplete linstring LineStringAutoPtr ls(factory_.createLineString(pseq)); fail("IllegalArgumentException expected."); } catch (geos::util::IllegalArgumentException const& e) { // TODO - mloskot - is waiting for "exception-safety" and bugs resolution // If removed, memory 3 leaks occur //delete pseq; const char* msg = e.what(); // OK ensure( msg != 0 ); } }
void object::test<4>() { using geos::geom::Coordinate; // Non-empty sequence of coordiantes const size_t size = 3; CoordArrayPtr pseq = new geos::geom::CoordinateArraySequence(); ensure( "sequence is null pointer.", pseq != 0 ); pseq->add(Coordinate(0, 0, 0)); pseq->add(Coordinate(5, 5, 5)); pseq->add(Coordinate(10, 10, 10)); ensure_equals( pseq->size(), size ); // Create examplar of linstring instance LineStringAutoPtr examplar(factory_.createLineString(pseq)); // Create copy LineStringAutoPtr copy(dynamic_cast<geos::geom::LineString*>(examplar->clone())); ensure( 0 != copy.get() ); ensure( !copy->isEmpty() ); ensure( copy->isSimple() ); ensure( copy->isValid() ); ensure( !copy->isClosed() ); ensure( !copy->isRing() ); GeometryPtr geo = 0; geo = copy->getEnvelope(); ensure( geo != 0 ); ensure( !geo->isEmpty() ); factory_.destroyGeometry(geo); geo = copy->getBoundary(); ensure( geo != 0 ); ensure( !geo->isEmpty() ); factory_.destroyGeometry(geo); geo = copy->convexHull(); ensure( geo != 0 ); ensure( !geo->isEmpty() ); factory_.destroyGeometry(geo); ensure_equals( copy->getGeometryTypeId(), geos::geom::GEOS_LINESTRING ); ensure_equals( copy->getDimension(), geos::geom::Dimension::L ); ensure_equals( copy->getBoundaryDimension(), geos::geom::Dimension::P ); ensure_equals( copy->getNumPoints(), size ); ensure_equals( copy->getArea(), 0.0 ); ensure( copy->getLength() != 0.0 ); }
void object::test<1>() { using geos::geom::Coordinate; // Create non-empty Coordiantes sequence for Exterior LinearRing const size_t size = 7; CoordArrayPtr coords = new geos::geom::CoordinateArraySequence(); ensure( "sequence is null pointer.", coords != nullptr ); coords->add(Coordinate(0, 10)); coords->add(Coordinate(5, 5)); coords->add(Coordinate(10, 5)); coords->add(Coordinate(15, 10)); coords->add(Coordinate(10, 15)); coords->add(Coordinate(5, 15)); coords->add(Coordinate(0, 10)); ensure_equals( coords->size(), size ); try { // Create non-empty LinearRing instance geos::geom::LinearRing ring(coords, factory_.get()); ensure( !ring.isEmpty() ); ensure( ring.isClosed() ); ensure( ring.isRing() ); ensure( ring.isSimple() ); // Exterior (clone is required here because Polygon takes ownership) GeometryPtr geo = ring.clone(); LinearRingPtr exterior = dynamic_cast<LinearRingPtr>(geo); // Create non-empty Polygon //geos::geom::Polygon poly(exterior, 0, &factory_); PolygonAutoPtr poly(factory_->createPolygon(exterior, nullptr)); ensure( !poly->isEmpty() ); ensure( poly->isSimple() ); ensure( poly->isValid() ); ensure_equals( poly->getNumGeometries(), 1u ); ensure_equals( poly->getNumInteriorRing(), 0u ); ensure_equals( poly->getNumPoints(), size ); } catch (geos::util::IllegalArgumentException const& e) { fail(e.what()); } }
void object::test<2>() { using geos::geom::Coordinate; // Non-empty sequence of coordiantes const size_t size3 = 3; CoordArrayPtr pseq = new geos::geom::CoordinateArraySequence(); ensure( "sequence is null pointer.", pseq != 0 ); pseq->add(Coordinate(0, 0, 0)); pseq->add(Coordinate(5, 5, 5)); pseq->add(Coordinate(10, 10, 10)); ensure_equals( pseq->size(), size3 ); // Create non-empty linstring instance LineStringAutoPtr ls(factory_.createLineString(pseq)); ensure( !ls->isEmpty() ); ensure( ls->isSimple() ); ensure( ls->isValid() ); ensure( !ls->isClosed() ); ensure( !ls->isRing() ); GeometryPtr geo = 0; geo = ls->getEnvelope(); ensure( geo != 0 ); ensure( !geo->isEmpty() ); factory_.destroyGeometry(geo); geo = ls->getBoundary(); ensure( geo != 0 ); ensure( !geo->isEmpty() ); factory_.destroyGeometry(geo); geo = ls->convexHull(); ensure( geo != 0 ); ensure( !geo->isEmpty() ); factory_.destroyGeometry(geo); ensure_equals( ls->getGeometryTypeId(), geos::geom::GEOS_LINESTRING ); ensure_equals( ls->getDimension(), geos::geom::Dimension::L ); ensure_equals( ls->getBoundaryDimension(), geos::geom::Dimension::P ); ensure_equals( ls->getCoordinateDimension(), 3 ); ensure_equals( ls->getNumPoints(), size3 ); ensure_equals( ls->getArea(), 0.0 ); ensure( ls->getLength() != 0.0 ); }