Skip to content

Commit c9e5341

Browse files
committedSep 3, 2014
[composer] Add some python tests for QgsComposerMapGrid
(sponsored by NIWA, New Zealand)
1 parent 1b77316 commit c9e5341

File tree

3 files changed

+239
-55
lines changed

3 files changed

+239
-55
lines changed
 

‎tests/src/python/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ ADD_PYTHON_TEST(PyQgsAnalysis test_qgsanalysis.py)
2323
ADD_PYTHON_TEST(PyQgsColorScheme test_qgscolorscheme.py)
2424
ADD_PYTHON_TEST(PyQgsColorSchemeRegistry test_qgscolorschemeregistry.py)
2525
ADD_PYTHON_TEST(PyQgsComposerMap test_qgscomposermap.py)
26+
ADD_PYTHON_TEST(PyQgsComposerMapGrid test_qgscomposermapgrid.py)
2627
ADD_PYTHON_TEST(PyQgsComposerEffects test_qgscomposereffects.py)
2728
ADD_PYTHON_TEST(PyQgsComposerShapes test_qgscomposershapes.py)
2829
ADD_PYTHON_TEST(PyQgsSymbolLayerV2 test_qgssymbollayerv2.py)

‎tests/src/python/test_qgscomposermap.py

Lines changed: 0 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -68,42 +68,6 @@ def __init__(self, methodName):
6868
self.mComposerMap.setFrameEnabled(True)
6969
self.mComposition.addComposerMap(self.mComposerMap)
7070

71-
def testGrid(self):
72-
"""Test that we can create a grid for a map."""
73-
myRectangle = QgsRectangle(781662.375, 3339523.125,
74-
793062.375, 3345223.125)
75-
self.mComposerMap.setNewExtent(myRectangle)
76-
self.mComposerMap.setGridEnabled(True)
77-
self.mComposerMap.setGridIntervalX(2000)
78-
self.mComposerMap.setGridIntervalY(2000)
79-
self.mComposerMap.setShowGridAnnotation(True)
80-
self.mComposerMap.setGridPenWidth(0.5)
81-
self.mComposerMap.setGridPenColor(QColor(0,255,0))
82-
self.mComposerMap.setGridAnnotationFont( QgsFontUtils.getStandardTestFont() )
83-
self.mComposerMap.setGridAnnotationPrecision(0)
84-
self.mComposerMap.setGridAnnotationPosition(QgsComposerMap.Disabled,
85-
QgsComposerMap.Left)
86-
self.mComposerMap.setGridAnnotationPosition(
87-
QgsComposerMap.OutsideMapFrame,
88-
QgsComposerMap.Right)
89-
self.mComposerMap.setGridAnnotationPosition(QgsComposerMap.Disabled,
90-
QgsComposerMap.Top)
91-
self.mComposerMap.setGridAnnotationPosition(
92-
QgsComposerMap.OutsideMapFrame,
93-
QgsComposerMap.Bottom)
94-
self.mComposerMap.setGridAnnotationDirection(QgsComposerMap.Horizontal,
95-
QgsComposerMap.Right)
96-
self.mComposerMap.setGridAnnotationDirection(QgsComposerMap.Horizontal,
97-
QgsComposerMap.Bottom)
98-
self.mComposerMap.setAnnotationFontColor(QColor(255,0,0,150))
99-
self.mComposerMap.setGridBlendMode(QPainter.CompositionMode_Overlay)
100-
checker = QgsCompositionChecker('composermap_grid', self.mComposition)
101-
myTestResult, myMessage = checker.testComposition()
102-
self.mComposerMap.setGridEnabled(False)
103-
self.mComposerMap.setShowGridAnnotation(False)
104-
105-
assert myTestResult == True, myMessage
106-
10771
def testOverviewMap(self):
10872
overviewMap = QgsComposerMap(self.mComposition, 20, 130, 70, 70)
10973
overviewMap.setFrameEnabled(True)
@@ -200,25 +164,6 @@ def testuniqueId(self):
200164
myMessage = 'old: %s new: %s' % (oldId, newId)
201165
assert oldId != newId, myMessage
202166

203-
def testZebraStyle(self):
204-
self.mComposerMap.setGridFrameStyle(QgsComposerMap.Zebra)
205-
myRectangle = QgsRectangle(785462.375, 3341423.125,
206-
789262.375, 3343323.125)
207-
self.mComposerMap.setNewExtent( myRectangle )
208-
self.mComposerMap.setGridEnabled(True)
209-
self.mComposerMap.setGridIntervalX(2000)
210-
self.mComposerMap.setGridIntervalY(2000)
211-
self.mComposerMap.setGridFrameWidth( 10 )
212-
self.mComposerMap.setGridFramePenSize( 1 )
213-
self.mComposerMap.setGridPenWidth( 0.5 )
214-
self.mComposerMap.setGridFramePenColor( QColor( 255, 100, 0, 200 ) )
215-
self.mComposerMap.setGridFrameFillColor1( QColor( 50, 90, 50, 100 ) )
216-
self.mComposerMap.setGridFrameFillColor2( QColor( 200, 220, 100, 60 ) )
217-
218-
checker = QgsCompositionChecker('composermap_zebrastyle', self.mComposition)
219-
myTestResult, myMessage = checker.testComposition()
220-
assert myTestResult == True, myMessage
221-
222167
def testWorldFileGeneration( self ):
223168
myRectangle = QgsRectangle(781662.375, 3339523.125, 793062.375, 3345223.125)
224169
self.mComposerMap.setNewExtent( myRectangle )
Lines changed: 238 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,238 @@
1+
# -*- coding: utf-8 -*-
2+
"""QGIS Unit tests for QgsComposerMap.
3+
4+
.. note. This program is free software; you can redistribute it and/or modify
5+
it under the terms of the GNU General Public License as published by
6+
the Free Software Foundation; either version 2 of the License, or
7+
(at your option) any later version.
8+
"""
9+
__author__ = '(C) 2012 by Dr. Horst Düster / Dr. Marco Hugentobler'
10+
__date__ = '20/08/2012'
11+
__copyright__ = 'Copyright 2012, The QGIS Project'
12+
# This will get replaced with a git SHA1 when you do a git archive
13+
__revision__ = '$Format:%H$'
14+
15+
import os
16+
import qgis
17+
from PyQt4.QtCore import QFileInfo
18+
from PyQt4.QtXml import QDomDocument
19+
from PyQt4.QtGui import (QPainter,
20+
QColor)
21+
22+
from qgis.core import (QgsComposerMap,
23+
QgsComposerMapGrid,
24+
QgsRectangle,
25+
QgsComposition,
26+
QgsMapSettings,
27+
QgsMapLayerRegistry,
28+
QgsCoordinateReferenceSystem,
29+
QgsFontUtils
30+
)
31+
from utilities import (unitTestDataPath,
32+
getQgisTestApp,
33+
TestCase,
34+
unittest,
35+
expectedFailure
36+
)
37+
from qgscompositionchecker import QgsCompositionChecker
38+
39+
QGISAPP, CANVAS, IFACE, PARENT = getQgisTestApp()
40+
TEST_DATA_DIR = unitTestDataPath()
41+
42+
43+
class TestQgsComposerMap(TestCase):
44+
45+
def __init__(self, methodName):
46+
"""Run once on class initialisation."""
47+
unittest.TestCase.__init__(self, methodName)
48+
49+
# create composition with composer map
50+
self.mMapSettings= QgsMapSettings()
51+
crs = QgsCoordinateReferenceSystem( 32633 )
52+
self.mMapSettings.setDestinationCrs( crs )
53+
self.mMapSettings.setCrsTransformEnabled(False)
54+
self.mComposition = QgsComposition(self.mMapSettings)
55+
self.mComposition.setPaperSize(297, 210)
56+
self.mComposerMap = QgsComposerMap(self.mComposition, 20, 20, 200, 100)
57+
self.mComposerMap.setFrameEnabled(True)
58+
self.mComposerMap.setBackgroundColor( QColor( 150, 100, 100 ) )
59+
self.mComposition.addComposerMap(self.mComposerMap)
60+
61+
def testGrid(self):
62+
"""Test that we can create a grid for a map."""
63+
myRectangle = QgsRectangle(781662.375, 3339523.125,
64+
793062.375, 3345223.125)
65+
self.mComposerMap.setNewExtent(myRectangle)
66+
self.mComposerMap.grid().setEnabled( True )
67+
self.mComposerMap.grid().setIntervalX( 2000 )
68+
self.mComposerMap.grid().setIntervalY( 2000 )
69+
self.mComposerMap.grid().setAnnotationEnabled( True )
70+
self.mComposerMap.grid().setGridLineColor( QColor( 0, 255, 0 ) )
71+
self.mComposerMap.grid().setGridLineWidth( 0.5 )
72+
self.mComposerMap.grid().setAnnotationFont( QgsFontUtils.getStandardTestFont() )
73+
self.mComposerMap.grid().setAnnotationPrecision( 0 )
74+
self.mComposerMap.grid().setAnnotationPosition( QgsComposerMapGrid.Disabled, QgsComposerMapGrid.Left )
75+
self.mComposerMap.grid().setAnnotationPosition( QgsComposerMapGrid.OutsideMapFrame, QgsComposerMapGrid.Right )
76+
self.mComposerMap.grid().setAnnotationPosition( QgsComposerMapGrid.Disabled, QgsComposerMapGrid.Top )
77+
self.mComposerMap.grid().setAnnotationPosition( QgsComposerMapGrid.OutsideMapFrame, QgsComposerMapGrid.Bottom )
78+
self.mComposerMap.grid().setAnnotationDirection( QgsComposerMapGrid.Horizontal, QgsComposerMapGrid.Right )
79+
self.mComposerMap.grid().setAnnotationDirection( QgsComposerMapGrid.Horizontal, QgsComposerMapGrid.Bottom )
80+
self.mComposerMap.grid().setAnnotationFontColor( QColor( 255, 0, 0, 150 ) )
81+
self.mComposerMap.grid().setBlendMode( QPainter.CompositionMode_Overlay )
82+
83+
checker = QgsCompositionChecker('composermap_grid', self.mComposition)
84+
myTestResult, myMessage = checker.testComposition()
85+
self.mComposerMap.setGridEnabled(False)
86+
self.mComposerMap.setShowGridAnnotation(False)
87+
88+
assert myTestResult == True, myMessage
89+
90+
def testCrossGrid(self):
91+
myRectangle = QgsRectangle( 781662.375, 3339523.125, 793062.375, 3345223.125 )
92+
self.mComposerMap.setNewExtent( myRectangle )
93+
self.mComposerMap.grid().setEnabled( True )
94+
self.mComposerMap.grid().setStyle( QgsComposerMapGrid.Cross )
95+
self.mComposerMap.grid().setCrossLength( 2.0 )
96+
self.mComposerMap.grid().setIntervalX( 2000 )
97+
self.mComposerMap.grid().setIntervalY( 2000 )
98+
self.mComposerMap.grid().setAnnotationEnabled( False )
99+
self.mComposerMap.grid().setGridLineColor( QColor( 0, 255, 0 ) )
100+
self.mComposerMap.grid().setGridLineWidth( 0.5 )
101+
self.mComposerMap.grid().setBlendMode( QPainter.CompositionMode_SourceOver )
102+
103+
checker = QgsCompositionChecker('composermap_crossgrid', self.mComposition)
104+
myTestResult, myMessage = checker.testComposition()
105+
106+
self.mComposerMap.grid().setStyle( QgsComposerMapGrid.Solid )
107+
self.mComposerMap.grid().setEnabled( False )
108+
self.mComposerMap.grid().setAnnotationEnabled( False )
109+
110+
assert myTestResult == True, myMessage
111+
112+
def testMarkerGrid(self):
113+
myRectangle = QgsRectangle( 781662.375, 3339523.125, 793062.375, 3345223.125 )
114+
self.mComposerMap.setNewExtent( myRectangle )
115+
self.mComposerMap.grid().setEnabled( True )
116+
self.mComposerMap.grid().setStyle( QgsComposerMapGrid.Markers )
117+
self.mComposerMap.grid().setCrossLength( 2.0 )
118+
self.mComposerMap.grid().setIntervalX( 2000 )
119+
self.mComposerMap.grid().setIntervalY( 2000 )
120+
self.mComposerMap.grid().setAnnotationEnabled( False )
121+
self.mComposerMap.grid().setBlendMode( QPainter.CompositionMode_SourceOver )
122+
123+
checker = QgsCompositionChecker('composermap_markergrid', self.mComposition)
124+
myTestResult, myMessage = checker.testComposition()
125+
126+
self.mComposerMap.grid().setStyle( QgsComposerMapGrid.Solid )
127+
self.mComposerMap.grid().setEnabled( False )
128+
self.mComposerMap.grid().setAnnotationEnabled( False )
129+
130+
assert myTestResult == True, myMessage
131+
132+
def testFrameOnly(self):
133+
myRectangle = QgsRectangle( 781662.375, 3339523.125, 793062.375, 3345223.125 )
134+
self.mComposerMap.setNewExtent( myRectangle )
135+
self.mComposerMap.grid().setEnabled( True )
136+
self.mComposerMap.grid().setStyle( QgsComposerMapGrid.FrameAnnotationsOnly )
137+
self.mComposerMap.grid().setIntervalX( 2000 )
138+
self.mComposerMap.grid().setIntervalY( 2000 )
139+
self.mComposerMap.grid().setAnnotationEnabled( False )
140+
self.mComposerMap.grid().setFrameStyle( QgsComposerMapGrid.Zebra )
141+
self.mComposerMap.grid().setBlendMode( QPainter.CompositionMode_SourceOver )
142+
143+
checker = QgsCompositionChecker('composermap_gridframeonly', self.mComposition)
144+
myTestResult, myMessage = checker.testComposition()
145+
146+
self.mComposerMap.grid().setStyle( QgsComposerMapGrid.Solid )
147+
self.mComposerMap.grid().setEnabled( False )
148+
self.mComposerMap.grid().setAnnotationEnabled( False )
149+
self.mComposerMap.grid().setFrameStyle( QgsComposerMapGrid.NoFrame )
150+
151+
assert myTestResult == True, myMessage
152+
153+
def testZebraStyle(self):
154+
self.mComposerMap.setGridFrameStyle(QgsComposerMap.Zebra)
155+
myRectangle = QgsRectangle(785462.375, 3341423.125,
156+
789262.375, 3343323.125)
157+
self.mComposerMap.setNewExtent( myRectangle )
158+
self.mComposerMap.grid().setIntervalX( 2000 )
159+
self.mComposerMap.grid().setIntervalY( 2000 )
160+
self.mComposerMap.grid().setGridLineColor( QColor( 0, 0, 0 ) )
161+
self.mComposerMap.grid().setAnnotationFontColor( QColor( 0, 0, 0 ) )
162+
self.mComposerMap.grid().setBlendMode( QPainter.CompositionMode_SourceOver )
163+
self.mComposerMap.grid().setFrameStyle( QgsComposerMapGrid.Zebra )
164+
self.mComposerMap.grid().setFrameWidth( 10 )
165+
self.mComposerMap.grid().setFramePenSize( 1 )
166+
self.mComposerMap.grid().setGridLineWidth( 0.5 )
167+
self.mComposerMap.grid().setFramePenColor( QColor( 255, 100, 0, 200 ) )
168+
self.mComposerMap.grid().setFrameFillColor1( QColor( 50, 90, 50, 100 ) )
169+
self.mComposerMap.grid().setFrameFillColor2( QColor( 200, 220, 100, 60 ) )
170+
self.mComposerMap.grid().setEnabled( True )
171+
172+
checker = QgsCompositionChecker('composermap_zebrastyle', self.mComposition)
173+
myTestResult, myMessage = checker.testComposition( 0, 100 )
174+
assert myTestResult == True, myMessage
175+
176+
def testZebraStyleSides(self):
177+
self.mComposerMap.setGridFrameStyle(QgsComposerMap.Zebra)
178+
myRectangle = QgsRectangle(781662.375, 3339523.125, 793062.375, 3345223.125)
179+
self.mComposerMap.setNewExtent( myRectangle )
180+
self.mComposerMap.grid().setIntervalX( 2000 )
181+
self.mComposerMap.grid().setIntervalY( 2000 )
182+
self.mComposerMap.grid().setGridLineColor( QColor( 0, 0, 0 ) )
183+
self.mComposerMap.grid().setAnnotationFontColor( QColor( 0, 0, 0 ) )
184+
self.mComposerMap.grid().setBlendMode( QPainter.CompositionMode_SourceOver )
185+
self.mComposerMap.grid().setFrameStyle( QgsComposerMapGrid.Zebra )
186+
self.mComposerMap.grid().setFrameWidth( 10 )
187+
self.mComposerMap.grid().setFramePenSize( 1 )
188+
self.mComposerMap.grid().setGridLineWidth( 0.5 )
189+
self.mComposerMap.grid().setFramePenColor( QColor( 0, 0, 0 ) )
190+
self.mComposerMap.grid().setFrameFillColor1( QColor( 0, 0, 0 ) )
191+
self.mComposerMap.grid().setFrameFillColor2( QColor( 255, 255, 255 ) )
192+
self.mComposerMap.grid().setEnabled( True )
193+
194+
self.mComposerMap.grid().setFrameSideFlag( QgsComposerMapGrid.FrameLeft, True )
195+
self.mComposerMap.grid().setFrameSideFlag( QgsComposerMapGrid.FrameRight, False )
196+
self.mComposerMap.grid().setFrameSideFlag( QgsComposerMapGrid.FrameTop, False )
197+
self.mComposerMap.grid().setFrameSideFlag( QgsComposerMapGrid.FrameBottom, False )
198+
199+
checker = QgsCompositionChecker('composermap_zebrastyle_left', self.mComposition)
200+
myTestResult, myMessage = checker.testComposition( 0, 100 )
201+
assert myTestResult == True, myMessage
202+
203+
self.mComposerMap.grid().setFrameSideFlag( QgsComposerMapGrid.FrameTop, True )
204+
checker = QgsCompositionChecker('composermap_zebrastyle_lefttop', self.mComposition)
205+
myTestResult, myMessage = checker.testComposition( 0, 100 )
206+
assert myTestResult == True, myMessage
207+
208+
self.mComposerMap.grid().setFrameSideFlag( QgsComposerMapGrid.FrameRight, True )
209+
checker = QgsCompositionChecker('composermap_zebrastyle_lefttopright', self.mComposition)
210+
myTestResult, myMessage = checker.testComposition( 0, 100 )
211+
assert myTestResult == True, myMessage
212+
213+
self.mComposerMap.grid().setFrameSideFlag( QgsComposerMapGrid.FrameBottom, True )
214+
self.mComposerMap.grid().setFrameStyle( QgsComposerMapGrid.NoFrame )
215+
216+
def testInteriorTicks(self):
217+
self.mComposerMap.setGridFrameStyle(QgsComposerMap.Zebra)
218+
myRectangle = QgsRectangle( 781662.375, 3339523.125, 793062.375, 3345223.125)
219+
self.mComposerMap.setNewExtent( myRectangle )
220+
self.mComposerMap.grid().setIntervalX( 2000 )
221+
self.mComposerMap.grid().setIntervalY( 2000 )
222+
self.mComposerMap.grid().setAnnotationFontColor( QColor( 0, 0, 0 ) )
223+
self.mComposerMap.grid().setBlendMode( QPainter.CompositionMode_SourceOver )
224+
self.mComposerMap.grid().setFrameStyle( QgsComposerMapGrid.InteriorTicks )
225+
self.mComposerMap.grid().setFrameWidth( 10 )
226+
self.mComposerMap.grid().setFramePenSize( 1 )
227+
self.mComposerMap.grid().setFramePenColor( QColor( 0, 0, 0 ) )
228+
self.mComposerMap.grid().setEnabled( True )
229+
self.mComposerMap.grid().setStyle( QgsComposerMapGrid.FrameAnnotationsOnly )
230+
231+
checker = QgsCompositionChecker('composermap_interiorticks', self.mComposition)
232+
myTestResult, myMessage = checker.testComposition( 0, 100 )
233+
assert myTestResult == True, myMessage
234+
235+
236+
if __name__ == '__main__':
237+
unittest.main()
238+

0 commit comments

Comments
 (0)
Please sign in to comment.