[QGIS Commit] r8767 - trunk/qgis/tests/src/core
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Sun Jul 13 19:07:12 EDT 2008
Author: timlinux
Date: 2008-07-13 19:07:11 -0400 (Sun, 13 Jul 2008)
New Revision: 8767
Modified:
trunk/qgis/tests/src/core/testqgsgeometry.cpp
Log:
Fixed qgsgeometry test so that it passes:
- clear member vars between each test
- added some geometry dump helpers
- generally neatened up unit test implementation
Modified: trunk/qgis/tests/src/core/testqgsgeometry.cpp
===================================================================
--- trunk/qgis/tests/src/core/testqgsgeometry.cpp 2008-07-13 21:37:40 UTC (rev 8766)
+++ trunk/qgis/tests/src/core/testqgsgeometry.cpp 2008-07-13 23:07:11 UTC (rev 8767)
@@ -41,8 +41,15 @@
void cleanup();// will be called after every testfunction.
void intersectionCheck();
- void unionCheck();
+ void unionCheck1();
+ void unionCheck2();
private:
+ /** A helper method to return wkb geometry type as a string */
+ QString wkbTypeAsString( QGis::WKBTYPE theType );
+ /** A helper method to dump to qdebug the geometry of a multipolygon */
+ void dumpMultiPolygon( QgsMultiPolygon &theMultiPolygon );
+ /** A helper method to dump to qdebug the geometry of a polygon */
+ void dumpPolygon( QgsPolygon &thePolygon );
QgsPoint mPoint1;
QgsPoint mPoint2;
QgsPoint mPoint3;
@@ -87,6 +94,12 @@
mPointY = QgsPoint(1040.0,1040.0);
mPointZ = QgsPoint(1000.0,1040.0);
+ mPolygonA.clear();
+ mPolygonB.clear();
+ mPolygonC.clear();
+ mPolylineA.clear();
+ mPolylineB.clear();
+ mPolylineC.clear();
mPolylineA << mPoint1 << mPoint2 << mPoint3 << mPoint4 << mPoint1;
mPolygonA << mPolylineA;
//Polygon B intersects Polygon A
@@ -137,25 +150,89 @@
QVERIFY ( !mpPolygonGeometryA->intersects(mpPolygonGeometryC));
}
-void TestQgsGeometry::unionCheck()
+void TestQgsGeometry::unionCheck1()
{
+ // should be a multipolygon with 2 parts as A does not intersect C
+ QgsGeometry * mypUnionGeometry = mpPolygonGeometryA->Union(mpPolygonGeometryC);
+ qDebug ("Geometry Type: " + wkbTypeAsString(mypUnionGeometry->wkbType()).toLocal8Bit());
+ QVERIFY (mypUnionGeometry->wkbType() == QGis::WKBMultiPolygon);
+ QgsMultiPolygon myMultiPolygon = mypUnionGeometry->asMultiPolygon();
+ QVERIFY (myMultiPolygon.size() > 0); //check that the union did not fail
+ dumpMultiPolygon(myMultiPolygon);
+}
+void TestQgsGeometry::unionCheck2()
+{
+ // should be a single polygon as A intersect B
+ QgsGeometry * mypUnionGeometry = mpPolygonGeometryA->Union(mpPolygonGeometryB);
+ qDebug ("Geometry Type: " + wkbTypeAsString(mypUnionGeometry->wkbType()).toLocal8Bit());
+ QVERIFY (mypUnionGeometry->wkbType() == QGis::WKBPolygon);
+ QgsPolygon myPolygon = mypUnionGeometry->asPolygon();
+ QVERIFY (myPolygon.size() > 0); //check that the union created a feature
+ dumpPolygon(myPolygon);
+ delete mypUnionGeometry;
+}
- // should be no union as A does not intersect C
- QgsGeometry * mypUnionGeometry = mpPolygonGeometryA->Union(mpPolygonGeometryC);
- QgsPolyline myPolyline = mypUnionGeometry->asPolyline();
- QVERIFY (myPolyline.size() == 0); //check that the union failed properly
- // should be a union as A intersect B
- mypUnionGeometry = mpPolygonGeometryA->Union(mpPolygonGeometryB);
- myPolyline = mypUnionGeometry->asPolyline();
- QVERIFY (myPolyline.size() > 0); //check that the union created a feature
- for (int i = 0; i < myPolyline.size(); i++)
+void TestQgsGeometry::dumpMultiPolygon( QgsMultiPolygon &theMultiPolygon )
+{
+ qDebug ("Multipolygon Geometry Dump");
+ for (int i = 0; i < theMultiPolygon.size(); i++)
{
- QgsPoint myPoint = myPolyline.at(i);
- qDebug(myPoint.stringRep().toLocal8Bit());
+ QgsPolygon myPolygon = theMultiPolygon.at(i);
+ qDebug("\tPolygon in multipolygon: " + QString::number(i).toLocal8Bit());
+ dumpPolygon(myPolygon);
}
- delete mypUnionGeometry;
}
+void TestQgsGeometry::dumpPolygon( QgsPolygon &thePolygon )
+{
+ for ( int j = 0; j < thePolygon.size(); j++ )
+ {
+ QgsPolyline myPolyline = thePolygon.at( j ); //rings of polygon
+ qDebug( "\t\tRing in polygon: " + QString::number( j ).toLocal8Bit() );
+
+ for ( int k = 0; k < myPolyline.size(); k++ )
+ {
+ QgsPoint myPoint = myPolyline.at( k );
+ qDebug( "\t\t\tPoint in ring " + QString::number( k ).toLocal8Bit() + " :" + myPoint.stringRep().toLocal8Bit() );
+ }
+ }
+}
+
+QString TestQgsGeometry::wkbTypeAsString( QGis::WKBTYPE theType )
+{
+ switch ( theType )
+ {
+ case QGis::WKBPoint:
+ return "WKBPoint";
+ case QGis::WKBLineString:
+ return "WKBLineString";
+ case QGis::WKBPolygon:
+ return "WKBPolygon";
+ case QGis::WKBMultiPoint:
+ return "WKBMultiPoint";
+ case QGis::WKBMultiLineString:
+ return "WKBMultiLineString";
+ case QGis::WKBMultiPolygon:
+ return "WKBMultiPolygon";
+ case QGis::WKBUnknown:
+ return "WKBUnknown";
+ case QGis::WKBPoint25D:
+ return "WKBPoint25D";
+ case QGis::WKBLineString25D:
+ return "WKBLineString25D";
+ case QGis::WKBPolygon25D:
+ return "WKBPolygon25D";
+ case QGis::WKBMultiPoint25D:
+ return "WKBMultiPoint25D";
+ case QGis::WKBMultiLineString25D:
+ return "WKBMultiLineString25D";
+ case QGis::WKBMultiPolygon25D:
+ return "WKBMultiPolygon25D";
+ default:
+ return "Unknown type";
+ }
+}
+
QTEST_MAIN(TestQgsGeometry)
#include "moc_testqgsgeometry.cxx"
More information about the QGIS-commit
mailing list