22 testqgsvectorfilewriter.cpp
33 --------------------------------------
44 Date : Sun Sep 16 12:22:54 AKDT 2007
5- Copyright : (C) 2007 by Gary E. Sherman
6- Email : sherman at mrcc dot com
5+ Copyright : (C) 2007 by Tim Sutton
6+ Email : tim @ linfiniti. com
77 ***************************************************************************
88 * *
99 * This program is free software; you can redistribute it and/or modify *
2323#include < iostream>
2424
2525#include < QApplication>
26+ #include < QDesktopServices>
2627
2728// qgis includes...
2829#include < qgsvectorlayer.h> // defines QgsFieldMap
4142#include < qgsproviderregistry.h>
4243#include < qgsmaplayerregistry.h>
4344
45+ // qgs unit test utility class
46+ #include " qgsrenderchecker.h"
47+
4448/* * \ingroup UnitTests
4549 * This is a unit test for the QgsMapRender class.
4650 * It will do some performance testing too
@@ -51,6 +55,7 @@ class TestQgsMapRender: public QObject
5155 Q_OBJECT;
5256 private slots:
5357 void initTestCase ();// will be called before the first testfunction is executed.
58+ void cleanupTestCase ();// will be called after the last testfunction was executed.
5459 void init (){};// will be called before each testfunction is executed.
5560 void cleanup (){};// will be called after every testfunction.
5661
@@ -64,6 +69,7 @@ class TestQgsMapRender: public QObject
6469 QgsFieldMap mFields ;
6570 QgsMapRender * mpMapRenderer;
6671 QgsMapLayer * mpPolysLayer;
72+ QString mReport ;
6773};
6874
6975void TestQgsMapRender::initTestCase ()
@@ -84,7 +90,7 @@ void TestQgsMapRender::initTestCase()
8490
8591 // create some objects that will be used in all tests...
8692 mEncoding = " UTF-8" ;
87- QgsField myField1 (" Field1 " ,QVariant::String, " String " ,10 ,0 ," Field 1 comment " );
93+ QgsField myField1 (" Value " ,QVariant::Int, " int " ,10 ,0 ," Value on lon " );
8894 mFields .insert (0 , myField1);
8995 mSRS = QgsSpatialRefSys (GEOWKT);
9096 //
@@ -94,6 +100,9 @@ void TestQgsMapRender::initTestCase()
94100 QString myTestDataDir = myDataDir + QDir::separator ();
95101 QString myTmpDir = QDir::tempPath () + QDir::separator () ;
96102 QString myFileName = myTmpDir + " maprender_testdata.shp" ;
103+ // copy over the default qml for our generated layer
104+ QString myQmlFileName = myTestDataDir + " maprender_testdata.qml" ;
105+ QFile::copy (myQmlFileName, myTmpDir + " maprender_testdata.qml" );
97106 qDebug ( " Checking test dataset exists..." );
98107 qDebug ( myFileName );
99108 if (!QFile::exists (myFileName))
@@ -131,7 +140,7 @@ void TestQgsMapRender::initTestCase()
131140 QgsFeature myFeature;
132141 myFeature.setTypeName (" WKBPolygon" );
133142 myFeature.setGeometry (mypPolygonGeometry);
134- myFeature.addAttribute (0 ," HelloWorld " );
143+ myFeature.addAttribute (0 ,i );
135144 //
136145 // Write the feature to the filewriter
137146 // and check for errors
@@ -167,32 +176,37 @@ void TestQgsMapRender::initTestCase()
167176 QStringList myLayers;
168177 myLayers << mpPolysLayer->getLayerID ();
169178 mpMapRenderer->setLayerSet (myLayers);
179+ mReport += " <h1>Map Render Tests</h1>\n " ;
170180}
171181
172- void TestQgsMapRender::performanceTest ()
182+
183+ void TestQgsMapRender::cleanupTestCase ()
173184{
185+ QString myReportFile = QDir::tempPath () + QDir::separator () + " maprendertest.html" ;
186+ QFile myFile ( myReportFile);
187+ if ( myFile.open ( QIODevice::WriteOnly ) )
188+ {
189+ QTextStream myQTextStream ( &myFile );
190+ myQTextStream << mReport ;
191+ myFile.close ();
192+ QDesktopServices::openUrl (" file://" +myReportFile);
193+ }
194+
195+ }
174196
175- //
176- // Now render our layers onto a pixmap
177- //
178- QPixmap myPixmap ( 1800 ,900 );
179- myPixmap.fill ( QColor ( " #98dbf9" ) );
180- QPainter myPainter ( &myPixmap );
181- mpMapRenderer->setOutputSize ( QSize ( 1800 ,900 ),72 );
197+
198+
199+ void TestQgsMapRender::performanceTest ()
200+ {
182201 mpMapRenderer->setExtent (mpPolysLayer->extent ());
183- qDebug (" Extents set to:" );
184- qDebug (mpPolysLayer->extent ().stringRep ());
185- QTime myTime;
186- myTime.start ();
187- mpMapRenderer->render ( &myPainter );
188- qDebug (" Elapsed time in ms for render job: " +
189- QString::number ( myTime.elapsed () ).toLocal8Bit ());
190- myPainter.end ();
191- //
192- // Save the pixmap to disk so the user can make a
193- // visual assessment if needed
194- //
195- myPixmap.save (QDir::tempPath () + QDir::separator () + " maprender_result.png" );
202+ QString myDataDir (TEST_DATA_DIR); // defined in CmakeLists.txt
203+ QString myTestDataDir = myDataDir + QDir::separator ();
204+ QgsRenderChecker myChecker;
205+ myChecker.setExpectedImage ( myTestDataDir + " expected_maprender.png" );
206+ myChecker.setMapRenderer ( mpMapRenderer );
207+ bool myResultFlag = myChecker.runTest (" maprender" );
208+ mReport += myChecker.report ();
209+ QVERIFY (myResultFlag);
196210}
197211
198212
0 commit comments