⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 multipointtest.cpp

📁 在Linux下做的QuadTree的程序
💻 CPP
字号:
// $Id: MultiPointTest.cpp 1842 2006-09-07 15:28:03Z strk $// // Test Suite for geos::geom::MultiPoint class.// TUT#include <tut.h>// GEOS#include <geos/geom/MultiPoint.h>#include <geos/geom/Dimension.h>#include <geos/geom/Geometry.h>#include <geos/geom/GeometryFactory.h>#include <geos/geom/PrecisionModel.h>#include <geos/io/ParseException.h>#include <geos/io/WKTReader.h>// STL#include <cmath>namespace tut{	//	// Test Group	//	// Common data used by tests	struct test_multipoint_data	{		typedef geos::geom::Geometry* GeometryPtr;		typedef geos::geom::Geometry const* GeometryCPtr;		typedef geos::geom::Point* PointPtr;		typedef geos::geom::Point const* PointCPtr;		typedef geos::geom::MultiPoint* MultiPointPtr;		typedef std::auto_ptr<geos::geom::MultiPoint> MultiPointAutoPtr;		typedef geos::geom::MultiPoint const* MultiPointCPtr;		geos::geom::PrecisionModel pm_;		geos::geom::GeometryFactory factory_;		geos::io::WKTReader reader_;		MultiPointAutoPtr empty_mp_;		MultiPointPtr mp_;		const size_t mp_size_;		test_multipoint_data()			:			pm_(1.0), factory_(&pm_, 0), reader_(&factory_),			empty_mp_(factory_.createMultiPoint()), mp_size_(5)		{			// Create non-empty MultiPoint			GeometryPtr geo = 0;			geo = reader_.read("MULTIPOINT(0 0, 5 5, 10 10, 15 15, 20 20)");			mp_ = static_cast<MultiPointPtr>(geo);		}		~test_multipoint_data()		{			factory_.destroyGeometry(mp_);		}	};	typedef test_group<test_multipoint_data> group;	typedef group::object object;	group test_multipoint_group("geos::geom::MultiPoint");	//	// Test Cases	//	// Test of user's constructor	template<>	template<>	void object::test<1>()	{		const size_t size0 = 0;		MultiPointAutoPtr mp(factory_.createMultiPoint());				ensure( mp->isEmpty() );		ensure( mp->isSimple() );		ensure( mp->isValid() );		ensure( mp->getCentroid() == 0 );		ensure_equals( mp->getNumPoints(), size0 );		ensure_equals( mp->getNumGeometries(), size0 );	}	// Test of copy constructor	template<>	template<>	void object::test<2>()	{		const size_t size0 = 0;		MultiPointAutoPtr copy(dynamic_cast<geos::geom::MultiPoint*>(empty_mp_->clone()));		ensure( copy.get() );				ensure( copy->isEmpty() );		ensure( copy->isSimple() );		ensure( copy->isValid() );		ensure( copy->getCentroid() == 0 );		ensure_equals( copy->getNumPoints(), size0 );		ensure_equals( copy->getNumGeometries(), size0 );	}	// Test of empty MultiPoint constructed by WKTReader	template<>	template<>	void object::test<3>()	{		const size_t size0 = 0;		GeometryPtr geo = reader_.read("MULTIPOINT EMPTY");		MultiPointPtr mp = static_cast<MultiPointPtr>(geo);		ensure( mp->isEmpty() );		ensure( mp->isSimple() );		ensure( mp->isValid() );		ensure( mp->getCentroid() == 0 );		ensure_equals( mp->getNumPoints(), size0 );		ensure_equals( mp->getNumGeometries(), size0 );		// FREE MEMORY		factory_.destroyGeometry(geo);	}	// Test of isEmpty() for empty MultiPoint	template<>	template<>	void object::test<4>()	{		ensure( empty_mp_->isEmpty() );	}	// Test of isSimple() for empty MultiPoint	template<>	template<>	void object::test<5>()	{		ensure( empty_mp_->isSimple() );	}	// Test of isValid() for empty MultiPoint	template<>	template<>	void object::test<6>()	{		ensure( empty_mp_->isValid() );	}	// Test of getEnvelope() for empty MultiPoint	template<>	template<>	void object::test<7>()	{		GeometryPtr envelope = empty_mp_->getEnvelope();			ensure( envelope != 0 );		ensure( envelope->isEmpty() );		factory_.destroyGeometry(envelope);	}	// Test of getBoundary() for empty MultiPoint	template<>	template<>	void object::test<8>()	{		GeometryPtr boundary = empty_mp_->getBoundary();			ensure( boundary != 0 );		ensure( boundary->isEmpty() );		factory_.destroyGeometry(boundary);	}	// Test of convexHull() for empty MultiPoint	template<>	template<>	void object::test<9>()	{		GeometryPtr hull = empty_mp_->convexHull();			ensure( hull != 0 );		ensure( hull->isEmpty() );		factory_.destroyGeometry(hull);	}	// Test of getGeometryTypeId() for empty MultiPoint	template<>	template<>	void object::test<10>()	{		ensure_equals( empty_mp_->getGeometryTypeId(), geos::geom::GEOS_MULTIPOINT );	}	// Test of getGeometryType() for empty MultiPoint	template<>	template<>	void object::test<11>()	{		const std::string type("MultiPoint");		ensure_equals( empty_mp_->getGeometryType(), type );	}	// Test of getDimension() for empty MultiPoint	template<>	template<>	void object::test<12>()	{		ensure_equals( empty_mp_->getDimension(), geos::geom::Dimension::P );	}	// Test of getBoundaryDimension() for empty MultiPoint	template<>	template<>	void object::test<13>()	{		ensure_equals( empty_mp_->getBoundaryDimension(), geos::geom::Dimension::False );	}		// Test of getNumPoints() for empty MultiPoint	template<>	template<>	void object::test<14>()	{		ensure_equals( empty_mp_->getNumPoints(), 0u );	}	// Test of getLength() for empty MultiPoint	template<>	template<>	void object::test<15>()	{		ensure_equals( empty_mp_->getLength(), 0.0 );	}	// Test of getArea() for empty MultiPoint	template<>	template<>	void object::test<16>()	{		ensure_equals( empty_mp_->getArea(), 0.0 );	}	// Test of isEmpty() for non-empty LinearRing	template<>	template<>	void object::test<17>()	{		ensure(mp_ != 0);		ensure( !mp_->isEmpty() );	}	// Test of getEnvelope() for non-empty LinearRing	template<>	template<>	void object::test<18>()	{		ensure(mp_ != 0);		GeometryPtr envelope = mp_->getEnvelope();			ensure( envelope != 0 );		ensure( !envelope->isEmpty() );		ensure_equals( envelope->getDimension(), geos::geom::Dimension::A );		// FREE MEMORY		factory_.destroyGeometry(envelope);	}	// Test of getBoundary() for non-empty LinearRing	template<>	template<>	void object::test<19>()	{		ensure(mp_ != 0);		GeometryPtr boundary = mp_->getBoundary();			ensure( boundary != 0 );		// OGC 05-126, Version: 1.1.0, Chapter 6.1.5 MultiPoint		ensure( "[OGC] The boundary of a MultiPoint is the empty set.", boundary->isEmpty() );		// FREE MEMORY		factory_.destroyGeometry(boundary);	}	// Test of convexHull() for non-empty LinearRing	template<>	template<>	void object::test<20>()	{		ensure(mp_ != 0);		GeometryPtr hull = mp_->convexHull();			ensure( hull != 0 );		ensure( !hull->isEmpty() );		ensure_equals( hull->getGeometryTypeId(), geos::geom::GEOS_LINESTRING );		ensure_equals( hull->getDimension(), geos::geom::Dimension::L );		// FREE MEMORY		factory_.destroyGeometry(hull);	}	// Test of getGeometryTypeId() for non-empty LinearRing	template<>	template<>	void object::test<21>()	{		ensure(mp_ != 0);		ensure_equals( mp_->getGeometryTypeId(), geos::geom::GEOS_MULTIPOINT );	}	// Test of getGeometryType() for non-empty Polygon	template<>	template<>	void object::test<22>()	{		ensure( mp_ != 0 );		const std::string type("MultiPoint");		ensure_equals( mp_->getGeometryType(), type );	}	// Test of getDimension() for non-empty LinearRing	template<>	template<>	void object::test<23>()	{		ensure(mp_ != 0);		ensure_equals( mp_->getDimension(), geos::geom::Dimension::P );	}	// Test of getBoundaryDimension() for non-empty LinearRing	template<>	template<>	void object::test<24>()	{		ensure(mp_ != 0);		ensure_equals( mp_->getBoundaryDimension(), geos::geom::Dimension::False );	}	// Test of getNumPoints() for non-empty LinearRing	template<>	template<>	void object::test<25>()	{		ensure(mp_ != 0);		ensure_equals( mp_->getNumPoints(), mp_size_ );	}	// Test of getLength() for non-empty LinearRing	template<>	template<>	void object::test<26>()	{		ensure(mp_ != 0);		ensure_equals( mp_->getLength(), 0.0 );	}	// Test of getArea() for non-empty LinearRing	template<>	template<>	void object::test<27>()	{		ensure(mp_ != 0);		ensure_equals( mp_->getArea(), 0.0 );	}	// Test of ParseException thrown when constructing MultiPoint from invalind WKT	template<>	template<>	void object::test<28>()	{		try		{			GeometryPtr geo = reader_.read("MULTIPOINT(0 0, 5)");			ensure(geo != 0);			// FREE TESTED LINEARRING			factory_.destroyGeometry(geo);			fail("ParseException expected.");		}		catch (geos::io::ParseException const& e)		{			const char* msg = e.what(); // ok 			ensure( msg != 0 );		}	}} // namespace tut

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -