Skip to content

Commit eb31e01

Browse files
committedMar 6, 2016
Move QgsCompositionChecker to core, speeds up compilation with
tests enabled
1 parent df22d56 commit eb31e01

23 files changed

+126
-150
lines changed
 

‎CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,7 @@ SET(ENABLE_MODELTEST FALSE CACHE BOOL "Enable QT ModelTest (not for production)"
322322

323323
IF (ENABLE_TESTS)
324324
SET( QT_USE_QTTEST TRUE )
325+
ADD_DEFINITIONS(-DENABLE_TESTS)
325326
ENABLE_TESTING()
326327
# Adds some testing specific build targets e.g. make Experimental
327328
INCLUDE(Dart)

‎src/core/qgsmultirenderchecker.cpp

Lines changed: 82 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
***************************************************************************/
1515

1616
#include "qgsmultirenderchecker.h"
17-
17+
#include "qgscomposition.h"
1818
#include <QDebug>
1919

2020
QgsMultiRenderChecker::QgsMultiRenderChecker()
@@ -102,3 +102,84 @@ QString QgsMultiRenderChecker::controlImagePath() const
102102
QDir::separator() + mControlPathPrefix + QDir::separator() + mControlName + QDir::separator();
103103
return myControlImageDir;
104104
}
105+
106+
#ifdef ENABLE_TESTS
107+
108+
//
109+
// QgsCompositionChecker
110+
//
111+
112+
///@cond PRIVATE
113+
114+
QgsCompositionChecker::QgsCompositionChecker( const QString& testName, QgsComposition* composition )
115+
: QgsMultiRenderChecker()
116+
, mTestName( testName )
117+
, mComposition( composition )
118+
, mSize( 1122, 794 )
119+
, mDotsPerMeter( 96 / 25.4 * 1000 )
120+
{
121+
// The composer has some slight render inconsistencies on the whole image sometimes
122+
setColorTolerance( 5 );
123+
}
124+
125+
QgsCompositionChecker::QgsCompositionChecker()
126+
: mComposition( nullptr )
127+
, mDotsPerMeter( 96 / 25.4 * 1000 )
128+
{
129+
}
130+
131+
QgsCompositionChecker::~QgsCompositionChecker()
132+
{
133+
}
134+
135+
bool QgsCompositionChecker::testComposition( QString &theReport, int page, int pixelDiff )
136+
{
137+
if ( !mComposition )
138+
{
139+
return false;
140+
}
141+
142+
setControlName( "expected_" + mTestName );
143+
144+
#if 0
145+
//fake mode to generate expected image
146+
//assume 96 dpi and size of the control image 1122 * 794
147+
QImage newImage( QSize( 1122, 794 ), QImage::Format_RGB32 );
148+
mComposition->setPlotStyle( QgsComposition::Print );
149+
newImage.setDotsPerMeterX( 96 / 25.4 * 1000 );
150+
newImage.setDotsPerMeterY( 96 / 25.4 * 1000 );
151+
drawBackground( &newImage );
152+
QPainter expectedPainter( &newImage );
153+
//QRectF sourceArea( 0, 0, mComposition->paperWidth(), mComposition->paperHeight() );
154+
//QRectF targetArea( 0, 0, 3507, 2480 );
155+
mComposition->renderPage( &expectedPainter, page );
156+
expectedPainter.end();
157+
newImage.save( mExpectedImageFile, "PNG" );
158+
return true;
159+
#endif //0
160+
161+
QImage outputImage( mSize, QImage::Format_RGB32 );
162+
163+
mComposition->setPlotStyle( QgsComposition::Print );
164+
outputImage.setDotsPerMeterX( mDotsPerMeter );
165+
outputImage.setDotsPerMeterY( mDotsPerMeter );
166+
drawBackground( &outputImage );
167+
QPainter p( &outputImage );
168+
mComposition->renderPage( &p, page );
169+
p.end();
170+
171+
QString renderedFilePath = QDir::tempPath() + '/' + QFileInfo( mTestName ).baseName() + "_rendered.png";
172+
outputImage.save( renderedFilePath, "PNG" );
173+
174+
setRenderedImage( renderedFilePath );
175+
176+
bool testResult = runTest( mTestName, pixelDiff );
177+
178+
theReport += report();
179+
180+
return testResult;
181+
}
182+
183+
///@endcond
184+
185+
#endif

‎src/core/qgsmultirenderchecker.h

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,4 +128,29 @@ class CORE_EXPORT QgsMultiRenderChecker
128128
QgsMapSettings mMapSettings;
129129
};
130130

131+
#ifdef ENABLE_TESTS
132+
// Renders a composition to an image and compares with an expected output
133+
///@cond PRIVATE
134+
class CORE_EXPORT QgsCompositionChecker : public QgsMultiRenderChecker
135+
{
136+
public:
137+
QgsCompositionChecker( const QString& testName, QgsComposition* composition );
138+
~QgsCompositionChecker();
139+
140+
void setSize( QSize size ) { mSize = size; }
141+
142+
bool testComposition( QString &theReport, int page = 0, int pixelDiff = 0 );
143+
144+
private:
145+
QgsCompositionChecker(); //forbidden
146+
147+
QString mTestName;
148+
QgsComposition* mComposition;
149+
QSize mSize;
150+
int mDotsPerMeter;
151+
};
152+
///@endcond
153+
#endif
154+
155+
131156
#endif // QGSMULTIRENDERCHECKER_H

‎tests/src/core/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Standard includes and utils to compile into all tests.
2-
SET (util_SRCS qgscompositionchecker.cpp)
2+
#SET (util_SRCS qgscompositionchecker.cpp)
33

44

55
#####################################################

‎tests/src/core/qgscompositionchecker.cpp

Lines changed: 0 additions & 87 deletions
This file was deleted.

‎tests/src/core/qgscompositionchecker.h

Lines changed: 0 additions & 44 deletions
This file was deleted.

‎tests/src/core/testqgsatlascomposition.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
#include "qgsapplication.h"
1919
#include "qgscomposition.h"
20-
#include "qgscompositionchecker.h"
20+
#include "qgsmultirenderchecker.h"
2121
#include "qgscomposermap.h"
2222
#include "qgscomposermapoverview.h"
2323
#include "qgsatlascomposition.h"

‎tests/src/core/testqgscomposereffects.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
#include "qgsapplication.h"
1919
#include "qgscomposition.h"
20-
#include "qgscompositionchecker.h"
20+
#include "qgsmultirenderchecker.h"
2121
#include "qgscomposershape.h"
2222
#include "qgsmaprenderer.h"
2323
#include <QObject>

‎tests/src/core/testqgscomposergroup.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
#include "qgscomposeritemgroup.h"
1919
#include "qgscomposerlabel.h"
2020
#include "qgscomposition.h"
21-
#include "qgscompositionchecker.h"
21+
#include "qgsmultirenderchecker.h"
2222
#include "qgsapplication.h"
2323

2424
#include <QObject>

‎tests/src/core/testqgscomposerhtml.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
#include "qgscomposerhtml.h"
2020
#include "qgscomposerframe.h"
2121
#include "qgscomposition.h"
22-
#include "qgscompositionchecker.h"
22+
#include "qgsmultirenderchecker.h"
2323
#include "qgsfontutils.h"
2424
#include <QObject>
2525
#include <QtTest/QtTest>

‎tests/src/core/testqgscomposermap.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
#include "qgsapplication.h"
1919
#include "qgscomposition.h"
20-
#include "qgscompositionchecker.h"
20+
#include "qgsmultirenderchecker.h"
2121
#include "qgscomposermap.h"
2222
#include "qgsmaplayerregistry.h"
2323
#include "qgsmaprenderer.h"

‎tests/src/core/testqgscomposermapgrid.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
#include "qgsapplication.h"
1919
#include "qgscomposition.h"
20-
#include "qgscompositionchecker.h"
20+
#include "qgsmultirenderchecker.h"
2121
#include "qgscomposermap.h"
2222
#include "qgscomposermapgrid.h"
2323
#include "qgsmaplayerregistry.h"

‎tests/src/core/testqgscomposermapoverview.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
#include "qgsapplication.h"
1919
#include "qgscomposition.h"
20-
#include "qgscompositionchecker.h"
20+
#include "qgsmultirenderchecker.h"
2121
#include "qgscomposermap.h"
2222
#include "qgscomposermapoverview.h"
2323
#include "qgsmaplayerregistry.h"

‎tests/src/core/testqgscomposermultiframe.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
#include "qgscomposerframe.h"
2020
#include "qgscomposerlabel.h"
2121
#include "qgscomposition.h"
22-
#include "qgscompositionchecker.h"
22+
#include "qgsmultirenderchecker.h"
2323
#include "qgsapplication.h"
2424

2525
#include <QObject>

‎tests/src/core/testqgscomposerobject.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
#include "qgscomposerobject.h"
1919
#include "qgscomposition.h"
20-
#include "qgscompositionchecker.h"
20+
#include "qgsmultirenderchecker.h"
2121
#include "qgsdatadefined.h"
2222
#include "qgsexpression.h"
2323
#include "qgsapplication.h"

‎tests/src/core/testqgscomposerpaper.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
#include "qgsapplication.h"
1919
#include "qgscomposition.h"
20-
#include "qgscompositionchecker.h"
20+
#include "qgsmultirenderchecker.h"
2121
#include "qgscomposershape.h"
2222
#include "qgssymbolv2.h"
2323
#include "qgssinglesymbolrendererv2.h"

‎tests/src/core/testqgscomposerpicture.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
#include "qgsapplication.h"
1919
#include "qgscomposition.h"
20-
#include "qgscompositionchecker.h"
20+
#include "qgsmultirenderchecker.h"
2121
#include "qgscomposerpicture.h"
2222
#include <QObject>
2323
#include <QtTest/QtTest>

‎tests/src/core/testqgscomposerrotation.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
#include "qgsapplication.h"
1919
#include "qgscomposition.h"
20-
#include "qgscompositionchecker.h"
20+
#include "qgsmultirenderchecker.h"
2121
#include "qgscomposershape.h"
2222
#include "qgscomposermap.h"
2323
#include "qgscomposerlabel.h"

‎tests/src/core/testqgscomposerscalebar.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
#include "qgsapplication.h"
1919
#include "qgscomposition.h"
20-
#include "qgscompositionchecker.h"
20+
#include "qgsmultirenderchecker.h"
2121
#include "qgscomposermap.h"
2222
#include "qgscomposerscalebar.h"
2323
#include "qgsmaplayerregistry.h"

‎tests/src/core/testqgscomposershapes.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
#include "qgsapplication.h"
1919
#include "qgscomposition.h"
20-
#include "qgscompositionchecker.h"
20+
#include "qgsmultirenderchecker.h"
2121
#include "qgscomposershape.h"
2222
#include "qgsmapsettings.h"
2323
#include "qgssymbolv2.h"

‎tests/src/core/testqgscomposertablev2.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
#include "qgsvectorlayer.h"
2626
#include "qgsvectordataprovider.h"
2727
#include "qgsfeature.h"
28-
#include "qgscompositionchecker.h"
28+
#include "qgsmultirenderchecker.h"
2929
#include "qgsfontutils.h"
3030
#include "qgsmaplayerregistry.h"
3131
#include "qgsproject.h"

‎tests/src/core/testqgscomposerutils.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
#include "qgsapplication.h" //for standard test font
1919
#include "qgscomposerutils.h"
2020
#include "qgscomposition.h"
21-
#include "qgscompositionchecker.h"
21+
#include "qgsmultirenderchecker.h"
2222
#include "qgsdatadefined.h"
2323
#include "qgsfontutils.h"
2424
#include <QObject>

‎tests/src/core/testqgscomposition.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
#include "qgscomposerhtml.h"
2424
#include "qgscomposerframe.h"
2525
#include "qgsmapsettings.h"
26-
#include "qgscompositionchecker.h"
26+
#include "qgsmultirenderchecker.h"
2727
#include "qgsfillsymbollayerv2.h"
2828

2929
#include <QObject>

0 commit comments

Comments
 (0)
Please sign in to comment.