Beginnings of unit test for vector layer

git-svn-id: http://svn.osgeo.org/qgis/trunk@14396 c8812cc2-4d05-0410-92ff-de0c093fc19c
This commit is contained in:
timlinux 2010-10-18 15:12:03 +00:00
parent 650abbb90f
commit 156fd1f5b6
3 changed files with 651 additions and 0 deletions

View File

@ -116,4 +116,5 @@ ADD_QGIS_TEST(geometrytest testqgsgeometry.cpp)
ADD_QGIS_TEST(coordinatereferencesystemtest testqgscoordinatereferencesystem.cpp)
ADD_QGIS_TEST(pointtest testqgspoint.cpp)
ADD_QGIS_TEST(searchstringtest testqgssearchstring.cpp)
ADD_QGIS_TEST(vectorlayertest testqgsvectorlayer.cpp)

View File

@ -0,0 +1,650 @@
/***************************************************************************
test_template.cpp
--------------------------------------
Date : Sun Sep 16 12:22:23 AKDT 2007
Copyright : (C) 2007 by Gary E. Sherman
Email : sherman at mrcc dot com
***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#include <QtTest>
#include <QObject>
#include <QString>
#include <QStringList>
#include <QObject>
#include <QApplication>
#include <QFileInfo>
#include <QDir>
#include <QDesktopServices>
#include <iostream>
//qgis includes...
#include <qgsmaprenderer.h>
#include <qgsmaplayer.h>
#include <qgsvectordataprovider.h>
#include <qgsvectorlayer.h>
#include <qgsapplication.h>
#include <qgsproviderregistry.h>
#include <qgsmaplayerregistry.h>
//qgis test includes
#include "qgsrenderchecker.h"
/** \ingroup UnitTests
* This is a unit test for the vector layer class.
*/
class TestQgsVectorLayer: public QObject
{
Q_OBJECT;
private:
bool mTestHasError;
QgsMapRenderer * mpMapRenderer;
QgsMapLayer * mpPointsLayer;
QgsMapLayer * mpLinesLayer;
QgsMapLayer * mpPolysLayer;
QgsVectorLayer * mpNonSpatialLayer;
QString mTestDataDir;
QString mReport;
private slots:
// will be called before the first testfunction is executed.
void initTestCase()
{
mTestHasError = false;
// init QGIS's paths - true means that all path will be inited from prefix
QString qgisPath = QCoreApplication::applicationDirPath();
QgsApplication::setPrefixPath( INSTALL_PREFIX, true );
QgsApplication::showSettings();
// Instantiate the plugin directory so that providers are loaded
QgsProviderRegistry::instance( QgsApplication::pluginPath() );
//create some objects that will be used in all tests...
std::cout << "Prefix PATH: " << QgsApplication::prefixPath().toLocal8Bit().data() << std::endl;
std::cout << "Plugin PATH: " << QgsApplication::pluginPath().toLocal8Bit().data() << std::endl;
std::cout << "PkgData PATH: " << QgsApplication::pkgDataPath().toLocal8Bit().data() << std::endl;
std::cout << "User DB PATH: " << QgsApplication::qgisUserDbFilePath().toLocal8Bit().data() << std::endl;
//
//create a non spatial layer that will be used in all tests...
//
QString myDataDir( TEST_DATA_DIR ); //defined in CmakeLists.txt
mTestDataDir = myDataDir + QDir::separator();
QString myDbfFileName = mTestDataDir + "nonspatial.dbf";
QFileInfo myDbfFileInfo( myDbfFileName );
mpNonSpatialLayer = new QgsVectorLayer( myDbfFileInfo.filePath(),
myDbfFileInfo.completeBaseName(), "ogr" );
// Register the layer with the registry
QgsMapLayerRegistry::instance()->addMapLayer( mpNonSpatialLayer );
//
//create a point layer that will be used in all tests...
//
QString myPointsFileName = mTestDataDir + "points.shp";
QFileInfo myPointFileInfo( myPointsFileName );
mpPointsLayer = new QgsVectorLayer( myPointFileInfo.filePath(),
myPointFileInfo.completeBaseName(), "ogr" );
// Register the layer with the registry
QgsMapLayerRegistry::instance()->addMapLayer( mpPointsLayer );
//
//create a poly layer that will be used in all tests...
//
QString myPolysFileName = mTestDataDir + "polys.shp";
QFileInfo myPolyFileInfo( myPolysFileName );
mpPolysLayer = new QgsVectorLayer( myPolyFileInfo.filePath(),
myPolyFileInfo.completeBaseName(), "ogr" );
// Register the layer with the registry
QgsMapLayerRegistry::instance()->addMapLayer( mpPolysLayer );
//
// Create a line layer that will be used in all tests...
//
QString myLinesFileName = mTestDataDir + "lines.shp";
QFileInfo myLineFileInfo( myLinesFileName );
mpLinesLayer = new QgsVectorLayer( myLineFileInfo.filePath(),
myLineFileInfo.completeBaseName(), "ogr" );
// Register the layer with the registry
QgsMapLayerRegistry::instance()->addMapLayer( mpLinesLayer );
//
// We only need maprender instead of mapcanvas
// since maprender does not require a qui
// and is more light weight
//
mpMapRenderer = new QgsMapRenderer();
QStringList myLayers;
myLayers << mpPointsLayer->getLayerID();
myLayers << mpPolysLayer->getLayerID();
myLayers << mpLinesLayer->getLayerID();
mpMapRenderer->setLayerSet( myLayers );
mReport += "<h1>Vector Renderer Tests</h1>\n";
}
// will be called after the last testfunction was executed.
void cleanupTestCase()
{
QString myReportFile = QDir::tempPath() + QDir::separator() + "renderertest.html";
QFile myFile( myReportFile );
if ( myFile.open( QIODevice::WriteOnly ) )
{
QTextStream myQTextStream( &myFile );
myQTextStream << mReport;
myFile.close();
QDesktopServices::openUrl( "file://" + myReportFile );
}
}
void init() {};// will be called before each testfunction is executed.
void cleanup() {};// will be called after every testfunction.
void QgsVectorLayerNonSpatialIterator()
{
QgsVectorDataProvider * myProvider = mpNonSpatialLayer->dataProvider();
QgsFeature f;
int myCount = 0;
myProvider->select();
while ( myProvider->nextFeature( f ) )
{
qDebug("Getting feature from provider");
myCount++;
}
QVERIFY( myCount > 10);
};
void QgsVectorLayerstorageType()
{
};
void QgsVectorLayercapabilitiesString()
{
};
void QgsVectorLayerdataComment()
{
};
void QgsVectorLayerproviderType()
{
};
void QgsVectorLayersetDisplayField()
{
};
void QgsVectorLayerdrawLabels()
{
};
void QgsVectorLayerdrawLineString()
{
};
void QgsVectorLayerdrawPolygon()
{
};
void QgsVectorLayerdrawRendererV2()
{
};
void QgsVectorLayerdrawRendererV2Levels()
{
};
void QgsVectorLayerreload()
{
};
void QgsVectorLayerdraw()
{
};
void QgsVectorLayerdeleteCachedGeometries()
{
};
void QgsVectorLayerdrawVertexMarker()
{
};
void QgsVectorLayerselect()
{
};
void QgsVectorLayerinvertSelection()
{
};
void QgsVectorLayerinvertSelectionInRectangle()
{
};
void QgsVectorLayerremoveSelection()
{
};
void QgsVectorLayertriggerRepaint()
{
};
void QgsVectorLayerdataProvider()
{
};
void QgsVectorLayersetProviderEncoding()
{
};
void QgsVectorLayerrenderer()
{
};
void QgsVectorLayersetRenderer()
{
};
void QgsVectorLayergeometryType()
{
};
void QgsVectorLayerwkbType()
{
};
void QgsVectorLayerboundingBoxOfSelected()
{
};
void QgsVectorLayerfeatureCount()
{
};
void QgsVectorLayerupdateFeatureCount()
{
};
void QgsVectorLayerupdateExtents()
{
};
void QgsVectorLayersubsetString()
{
};
void QgsVectorLayersetSubsetString()
{
};
void QgsVectorLayerupdateFeatureAttributes()
{
};
void QgsVectorLayerupdateFeatureGeometry()
{
};
void QgsVectorLayernextFeature()
{
};
void QgsVectorLayerfeatureAtId()
{
};
void QgsVectorLayeraddFeature()
{
};
void QgsVectorLayerinsertVertex()
{
};
void QgsVectorLayermoveVertex()
{
};
void QgsVectorLayerdeleteVertex()
{
};
void QgsVectorLayerdeleteSelectedFeatures()
{
};
void QgsVectorLayeraddRing()
{
};
void QgsVectorLayeraddIsland()
{
};
void QgsVectorLayertranslateFeature()
{
};
void QgsVectorLayersplitFeatures()
{
};
void QgsVectorLayerremovePolygonIntersections()
{
};
void QgsVectorLayeraddTopologicalPoints()
{
};
void QgsVectorLayerlabel()
{
};
void QgsVectorLayerenableLabels()
{
};
void QgsVectorLayerhasLabelsEnabled()
{
};
void QgsVectorLayerstartEditing()
{
};
void QgsVectorLayerreadXml()
{
};
void QgsVectorLayersetDataProvider()
{
};
void QgsVectorLayerwriteXml()
{
};
void QgsVectorLayerreadSymbology()
{
};
void QgsVectorLayerwriteSymbology()
{
};
void QgsVectorLayerchangeGeometry()
{
};
void QgsVectorLayerchangeAttributeValue()
{
};
void QgsVectorLayeraddAttribute()
{
};
void QgsVectorLayeraddAttributeAlias()
{
};
void QgsVectorLayerattributeAlias()
{
};
void QgsVectorLayerattributeDisplayName()
{
};
void QgsVectorLayerdeleteAttribute()
{
};
void QgsVectorLayerdeleteFeature()
{
};
void QgsVectorLayerpendingFields()
{
};
void QgsVectorLayerpendingAllAttributesList()
{
};
void QgsVectorLayerpendingFeatureCount()
{
};
void QgsVectorLayercommitChanges()
{
};
void QgsVectorLayercommitErrors()
{
};
void QgsVectorLayerrollBack()
{
};
void QgsVectorLayersetSelectedFeatures()
{
};
void QgsVectorLayerselectedFeatureCount()
{
};
void QgsVectorLayerselectedFeaturesIds()
{
};
void QgsVectorLayerselectedFeatures()
{
};
void QgsVectorLayeraddFeatures()
{
};
void QgsVectorLayercopySymbologySettings()
{
};
void QgsVectorLayerhasCompatibleSymbology()
{
};
void QgsVectorLayersnapPoint()
{
};
void QgsVectorLayersnapWithContext()
{
};
void QgsVectorLayersnapToGeometry()
{
};
void QgsVectorLayerinsertSegmentVerticesForSnap()
{
};
void QgsVectorLayerboundingBoxFromPointList()
{
};
void QgsVectorLayercurrentVertexMarkerType()
{
};
void QgsVectorLayercurrentVertexMarkerSize()
{
};
void QgsVectorLayerdrawFeature()
{
};
void QgsVectorLayersetCoordinateSystem()
{
};
void QgsVectorLayertransformPoint()
{
};
void QgsVectorLayertransformPoints()
{
};
void QgsVectorLayerdisplayField()
{
};
void QgsVectorLayerisEditable()
{
};
void QgsVectorLayerisModified()
{
};
void QgsVectorLayersetModified()
{
};
void QgsVectorLayereditType()
{
};
void QgsVectorLayersetEditType()
{
};
void QgsVectorLayereditForm()
{
};
void QgsVectorLayersetEditForm()
{
};
void QgsVectorLayersetAnnotationForm()
{
};
void QgsVectorLayereditFormInit()
{
};
void QgsVectorLayersetEditFormInit()
{
};
void QgsVectorLayervalueMap()
{
};
void QgsVectorLayerrange()
{
};
void QgsVectorLayeraddOverlay()
{
};
void QgsVectorLayerremoveOverlay()
{
};
void QgsVectorLayervectorOverlays()
{
};
void QgsVectorLayerfindOverlayByType()
{
};
void QgsVectorLayerrendererV2()
{
};
void QgsVectorLayersetRendererV2()
{
};
void QgsVectorLayerisUsingRendererV2()
{
};
void QgsVectorLayersetUsingRendererV2()
{
};
void QgsVectorLayereditGeometryChange()
{
};
void QgsVectorLayereditFeatureAdd()
{
};
void QgsVectorLayereditFeatureDelete()
{
};
void QgsVectorLayereditAttributeChange()
{
};
void QgsVectorLayerbeginEditCommand()
{
};
void QgsVectorLayerendEditCommand()
{
};
void QgsVectorLayerdestroyEditCommand()
{
};
void QgsVectorLayerredoEditCommand()
{
};
void QgsVectorLayerundoEditCommand()
{
};
void QgsVectorLayersetCheckedState()
{
};
void QgsVectorLayercheckedState()
{
};
void QgsVectorLayerfieldNameIndex()
{
};
void QgsVectorLayerstopRendererV2()
{
};
};
QTEST_MAIN(TestQgsVectorLayer)
#include "moc_testqgsvectorlayer.cxx"

BIN
tests/testdata/nonspatial.dbf vendored Normal file

Binary file not shown.