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

📄 intersectionmatrixtest.cpp

📁 在Linux下做的QuadTree的程序
💻 CPP
字号:
// $Id: IntersectionMatrixTest.cpp 1820 2006-09-06 16:54:23Z mloskot $// // Test Suite for geos::geom::IntersectionMatrix class.// TUT#include <tut.h>// GEOS#include <geos/geom/IntersectionMatrix.h>#include <geos/geom/Dimension.h>// STL#include <memory> #include <string>#include <sstream>namespace tut{    //    // Test Group    //    // Common data used by test cases    struct test_intersectionmatrix_data	{		typedef geos::geom::IntersectionMatrix* MatrixPtr;		typedef geos::geom::IntersectionMatrix const* MatrixCPtr;		const std::string pattern_false_;		geos::geom::IntersectionMatrix im_;		test_intersectionmatrix_data()			: pattern_false_("FFFFFFFFF"),im_(pattern_false_)		{}	};    typedef test_group<test_intersectionmatrix_data> group;    typedef group::object object;    group test_intersectionmatrix_group("geos::geom::IntersectionMatrix");    //    // Test Cases    //    // Test of default constructor    template<>    template<>    void object::test<1>()    {		ensure_equals( im_.toString(), pattern_false_ );	}    // Test of user's constructor    template<>    template<>    void object::test<2>()	{		const std::string pattern("012*TF012");		geos::geom::IntersectionMatrix im(pattern);				ensure_equals( im.toString(), pattern );	}    // Test of copy constructor    template<>    template<>    void object::test<3>()	{		geos::geom::IntersectionMatrix copy(im_);				ensure_equals( copy.toString(), im_.toString() );	}    // Test nr 2 of copy constructor    template<>    template<>	void object::test<4>()	{		const std::string pattern("012*TF012");		geos::geom::IntersectionMatrix examplar(pattern);				ensure_equals( examplar.toString(), pattern );		geos::geom::IntersectionMatrix copy(examplar);				ensure_equals( copy.toString(), examplar.toString() );	}	// Test of matches(int actualDimensionValue, char requiredDimensionSymbol)    template<>    template<>	void object::test<5>()	{		const int dummyAny = 999;		ensure( im_.matches(dummyAny, '*') );			ensure( im_.matches(geos::geom::Dimension::P, '0') );				ensure( im_.matches(geos::geom::Dimension::True , 'T') );		ensure( !im_.matches(geos::geom::Dimension::False , 'T') );		ensure( !im_.matches(geos::geom::Dimension::DONTCARE , 'T') );	}		// Test of matches(const std::string& requiredDimensionSymbols)    template<>    template<>	void object::test<6>()	{		const std::string pattern("012*TF012");		ensure( im_.matches(pattern_false_) );		ensure( !im_.matches(pattern) );	}	// Test of matches(const std::string& actualDimensionSymbols,	//				   const std::string& requiredDimensionSymbols)    template<>    template<>	void object::test<7>()	{		ensure( im_.matches(pattern_false_, pattern_false_) );	}	// Test of matches(const std::string& actualDimensionSymbols,	//				   const std::string& requiredDimensionSymbols)	template<>	template<>	void object::test<8>()	{		const std::string pattern("012*TF012");		ensure( !im_.matches(pattern_false_, pattern) );	}	// Test of matches(const std::string& actualDimensionSymbols,	//				   const std::string& requiredDimensionSymbols)	template<>	template<>	void object::test<9>()	{		const std::string pattern("012*TF012");		ensure( im_.matches(pattern, pattern) );	}			// add(IntersectionMatrix *im)    template<>    template<>	void object::test<10>()	{		// Create local matrix		const std::string pattern("012*TF012");		geos::geom::IntersectionMatrix im_local(pattern);				ensure_equals( im_local.toString(), pattern );				// Add local matrix to the matrix with 'FFFFFFFFF' pattern		im_local.add(&im_);				// Check pattern of local matrix after addition		const std::string pattern_result("012FFF012");		ensure_equals( im_local.toString(), pattern_result );		ensure( im_local.matches(pattern_result) );	}	// Test of set(int row, int column, int dimensionValue);    template<>    template<>	void object::test<11>()	{		// 'im_' is initialized with 'FFFFFFFFF'		ensure_equals( im_.toString(), pattern_false_);				// Do some changes and checks		im_.set(0, 0, geos::geom::Dimension::P);				ensure_equals( im_.toString(), "0FFFFFFFF" );			}	// Test of set(const std::string& dimensionSymbols);    template<>    template<>	void object::test<12>()	{		// 'im_' is initialized with 'FFFFFFFFF'		ensure_equals( im_.toString(), pattern_false_);				const std::string pattern("012*TF012");		im_.set(pattern);				ensure_equals( im_.toString(), pattern);	}	// Test of setAll(int dimensionValue);    template<>    template<>	void object::test<13>()	{		// 'im_' is initialized with 'FFFFFFFFF'		ensure_equals( im_.toString(), pattern_false_);				const std::string pattern("000000000");		im_.setAll(geos::geom::Dimension::P);		ensure_equals( im_.toString(), pattern);	}	// Test of setAtLeast(std::string minimumDimensionSymbols)    template<>    template<>	void object::test<14>()	{		// 'im_' is initialized with 'FFFFFFFFF'		ensure_equals( im_.toString(), pattern_false_);						// 1. No change expected		im_.setAtLeast(pattern_false_);		ensure_equals( im_.toString(), pattern_false_);		// 2. Set new pattern		const std::string pattern_new("FT*012FT*");		const std::string pattern_expected("FFF012FFF");				im_.setAtLeast(pattern_new);		ensure_not_equals( im_.toString(), pattern_false_);		ensure_equals( im_.toString(), pattern_expected);				// 3. Set old pattern, no change expected		im_.setAtLeast(pattern_false_);		ensure_equals( im_.toString(), pattern_expected);	}	// Test of setAtLeast(int row, int column, int minimumDimensionValue);    template<>    template<>	void object::test<15>()	{		// 'im_' is initialized with 'FFFFFFFFF'		ensure_equals( im_.toString(), pattern_false_);		// 1. No change expected		im_.setAtLeast(0, 0, geos::geom::Dimension::False);		ensure_equals( im_.toString(), pattern_false_);							// 2. Change is expected		im_.setAtLeast(0, 0, geos::geom::Dimension::A);		ensure_equals( im_.toString(), "2FFFFFFFF");		}	// Test of setAtLeastIfValid(int row, int column, int minimumDimensionValue)	template<>	template<>	void object::test<16>()	{		// 'im_' is initialized with 'FFFFFFFFF'		ensure_equals( im_.toString(), pattern_false_);		// 1. No change expected		im_.setAtLeast(0, 0, geos::geom::Dimension::A);		ensure_not_equals( im_.toString(), pattern_false_);		ensure_equals( im_.get(0, 0), geos::geom::Dimension::A);	}		// Test of get(int row, int column)    template<>    template<>	void object::test<17>()	{		// Test on the original pattern 'FFFFFFFFF' of the 'im_' object		ensure_equals( im_.toString(), pattern_false_);		ensure_equals( im_.get(0, 0), geos::geom::Dimension::False );				// Change first value and test again 		im_.setAtLeast(0, 0, geos::geom::Dimension::A);		ensure_equals( im_.get(0, 0), geos::geom::Dimension::A );				// Change last value and test again		im_.setAtLeast(2, 2, geos::geom::Dimension::L);		ensure_equals( im_.get(2, 2), geos::geom::Dimension::L );	}		// Test of isContains()    template<>    template<>	void object::test<18>()	{		// Test on the FALSE matrix		ensure_equals( im_.toString(),  pattern_false_);		ensure( !im_.isContains() );						// 1. Test 'minimum' version of 'contains' matrix		const std::string pattern_minimum("T*****FF*");		geos::geom::IntersectionMatrix minimum(pattern_minimum);		ensure_equals( minimum.toString(), pattern_minimum );		ensure( minimum.isContains() );				// 2. Test other version of  valid 'contains' matrix		const std::string pattern_contains("T00000FF0");		geos::geom::IntersectionMatrix contains(pattern_contains);		ensure_equals( contains.toString(),  pattern_contains );		ensure( contains.isContains() );				// 3. Test 'not-contains' version of 'contains' matrix		const std::string pattern_notcontains("T0F00F000");		geos::geom::IntersectionMatrix notcontains(pattern_notcontains);		ensure_equals( notcontains.toString(),  pattern_notcontains );						ensure( !notcontains.isContains() );	}	// Test of isCrosses(int dimensionOfGeometryA, int dimensionOfGeometryB)    template<>    template<>	void object::test<19>()	{		using geos::geom::Dimension;				// Test on the FALSE matrix		ensure_equals( im_.toString(),  pattern_false_);		ensure( !im_.isCrosses(Dimension::L, Dimension::L) );				// P/L: dim(I(a) * I(b)) AND dim(I(a) * E(b))		im_.set("TFTFFFFFF");		ensure( im_.isCrosses(Dimension::P, Dimension::L) );				// L/P: dim(I(a) * I(b)) AND dim(I(a) * E(b))		im_.set("TFTFFFFFF");		ensure( !im_.isCrosses(Dimension::L, Dimension::P) );		// P/L: dim(I(a) * I(b)) AND dim(E(a) * I(b))		im_.set("TFFFFFTFF");		ensure( !im_.isCrosses(Dimension::P, Dimension::L) );				// L/P: dim(I(a) * I(b)) AND dim(E(a) * I(b))		im_.set("TFFFFFTFF");		ensure( im_.isCrosses(Dimension::L, Dimension::P) );				// L/L: dim(I(a) * I(b)) == 0		im_.set("0FFFFFFFF");		ensure( im_.isCrosses(Dimension::L, Dimension::L) );		// L/L: dim(I(a) * I(b)) == 1		im_.set("1FFFFFFFF");		ensure( !im_.isCrosses(Dimension::L, Dimension::L) );	}	// Test of isDisjoint()    template<>    template<>	void object::test<20>()	{			// Test on the FALSE matrix		ensure_equals( im_.toString(),  pattern_false_);		ensure( im_.isDisjoint() );				im_.set("FF*FF****");		ensure( im_.isDisjoint() );				im_.set("FF1FF2T*0");		ensure( im_.isDisjoint() );				im_.set("*F*FF****");		ensure( !im_.isDisjoint() );	}	// Test of isEquals(int dimensionOfGeometryA, int dimensionOfGeometryB)    template<>    template<>	void object::test<21>()	{		using geos::geom::Dimension;				// Test on the FALSE matrix		ensure_equals( im_.toString(),  pattern_false_);		ensure( !im_.isEquals(Dimension::L, Dimension::L) );				// Test geometries with all dimensions		im_.set("0FFFFFFF2");		ensure( im_.isEquals(Dimension::P, Dimension::P) );		im_.set("1FFF0FFF2");		ensure( im_.isEquals(Dimension::L, Dimension::L) );		im_.set("2FFF1FFF2");		ensure( im_.isEquals(Dimension::A, Dimension::A) );		im_.set("0F0FFFFF2");		ensure( !im_.isEquals(Dimension::P, Dimension::P) );		im_.set("1FFF1FFF2");		ensure( im_.isEquals(Dimension::L, Dimension::L) );		im_.set("2FFF1*FF2");		ensure( !im_.isEquals(Dimension::A, Dimension::A) );		im_.set("0FFFFFFF2");		ensure( !im_.isEquals(Dimension::P, Dimension::L) );		im_.set("1FFF0FFF2");		ensure( !im_.isEquals(Dimension::L, Dimension::A) );		im_.set("2FFF1FFF2");		ensure( !im_.isEquals(Dimension::A, Dimension::P) );	}	// Test of isIntersects()    template<>    template<>	void object::test<22>()	{		// Test on the FALSE matrix		ensure_equals( im_.toString(),  pattern_false_);		ensure( !im_.isIntersects() );				im_.set("FF*FF****");		ensure( !im_.isIntersects() );		im_.set("FF1FF2T*0");		ensure( !im_.isIntersects() );		im_.set("*F*FF****");		ensure( im_.isIntersects() );	}	// Test of isOverlaps(int dimensionOfGeometryA, int dimensionOfGeometryB)    template<>    template<>	void object::test<23>()	{		using geos::geom::Dimension;				// Test on the FALSE matrix		ensure_equals( im_.toString(),  pattern_false_);		ensure( !im_.isEquals(Dimension::L, Dimension::L) );		im_.set("2*2***2**");		ensure( im_.isOverlaps(Dimension::P, Dimension::P) );		im_.set("2*2***2**");		ensure( im_.isOverlaps(Dimension::A, Dimension::A) );		im_.set("2*2***2**");		ensure( !im_.isOverlaps(Dimension::P, Dimension::A) );		im_.set("2*2***2**");		ensure( !im_.isOverlaps(Dimension::L, Dimension::L) );		im_.set("1*2***2**");		ensure( im_.isOverlaps(Dimension::L, Dimension::L) );		im_.set("0FFFFFFF2");		ensure( !im_.isOverlaps(Dimension::P, Dimension::P) );		im_.set("1FFF0FFF2");		ensure( !im_.isOverlaps(Dimension::L, Dimension::L) );		im_.set("2FFF1FFF2");		ensure( !im_.isOverlaps(Dimension::A, Dimension::A) );	}	// Test of isTouches(int dimensionOfGeometryA, int dimensionOfGeometryB)    template<>    template<>	void object::test<24>()	{		using geos::geom::Dimension;						// Test on the FALSE matrix		ensure_equals( im_.toString(),  pattern_false_);		ensure( !im_.isTouches(Dimension::P, Dimension::P) );				im_.set("FT*******");		ensure( im_.isTouches(Dimension::P, Dimension::A) );		im_.set("FT*******");		ensure( im_.isTouches(Dimension::A, Dimension::P) );		im_.set("FT*******");		ensure( !im_.isTouches(Dimension::P, Dimension::P));			}	// Test of isWithin()    template<>    template<>	void object::test<25>()	{		// Test on the FALSE matrix		ensure_equals( im_.toString(),  pattern_false_);		ensure( !im_.isWithin() );				im_.set("T0F00F000");		ensure( im_.isWithin() );		im_.set("T00000FF0");		ensure( !im_.isWithin() );	}	// Test of IntersectionMatrix* transpose()    template<>    template<>	void object::test<26>()	{		using geos::geom::IntersectionMatrix;		IntersectionMatrix input("012*TF012");		IntersectionMatrix transposed(input);				// transpose() returns 'this' pointer to transposed object		MatrixCPtr output = transposed.transpose();		ensure( output != 0 );				// TODO - mloskot - waiting for equality operators		//ensure_equals( (*output), input );		ensure_equals( "0*01T12F2", transposed.toString() );		ensure_equals( "012*TF012", input.toString() );	}	// Test of toString() and output operator    template<>    template<>	void object::test<27>()	{		ensure_not_equals( "0*01T12F2", im_.toString() );		ensure_equals( "FFFFFFFFF", im_.toString() );		std::stringstream ss;		ss << im_;		ensure_not_equals( "0*01T12F2", ss.str() );		ensure_equals( "FFFFFFFFF", ss.str() );	}	// Test of isCovers()    template<>    template<>	void object::test<28>()	{		using geos::geom::IntersectionMatrix;		ensure( IntersectionMatrix("T*****FF*").isCovers() );		ensure( IntersectionMatrix("*T****FF*").isCovers() );		ensure( IntersectionMatrix("***T**FF*").isCovers() );		ensure( IntersectionMatrix("****T*FF*").isCovers() );	}	// Test of isCoveredBy()    template<>    template<>	void object::test<29>()	{		using geos::geom::IntersectionMatrix;		ensure( IntersectionMatrix("T*F**F***").isCoveredBy() );		ensure( IntersectionMatrix("*TF**F***").isCoveredBy() );		ensure( IntersectionMatrix("**FT*F***").isCoveredBy() );		ensure( IntersectionMatrix("**F*TF***").isCoveredBy() );	}} // namespace tut

⌨️ 快捷键说明

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