59
59
60
60
class TestQgsRulebasedRenderer (unittest .TestCase ):
61
61
62
+ @classmethod
63
+ def setUpClass (cls ):
64
+ # Super ugly hack to make sure python does not clean up our mapsetting objects
65
+ # this might lead to occasional crashes on travis
66
+ cls .mapsettings_archive = list ()
67
+
62
68
def setUp (self ):
63
69
myShpFile = os .path .join (TEST_DATA_DIR , 'rectangles.shp' )
64
70
layer = QgsVectorLayer (myShpFile , 'Rectangles' , 'ogr' )
@@ -86,15 +92,14 @@ def setUp(self):
86
92
87
93
rendered_layers = [layer ]
88
94
self .mapsettings .setLayers (rendered_layers )
95
+ self .mapsettings_archive .append (self .mapsettings )
89
96
90
97
def testElse (self ):
91
98
# Setup rendering check
92
99
renderchecker = QgsMultiRenderChecker ()
93
100
renderchecker .setMapSettings (self .mapsettings )
94
101
renderchecker .setControlName ('expected_rulebased_else' )
95
- result = renderchecker .runTest ('rulebased_else' )
96
-
97
- assert result
102
+ self .assertTrue (renderchecker .runTest ('rulebased_else' ))
98
103
99
104
def testDisabledElse (self ):
100
105
# Disable a rule and assert that it's hidden not rendered with else
@@ -103,9 +108,7 @@ def testDisabledElse(self):
103
108
renderchecker = QgsMultiRenderChecker ()
104
109
renderchecker .setMapSettings (self .mapsettings )
105
110
renderchecker .setControlName ('expected_rulebased_disabled_else' )
106
- result = renderchecker .runTest ('rulebased_disabled_else' )
107
-
108
- assert result
111
+ self .assertTrue (renderchecker .runTest ('rulebased_disabled_else' ))
109
112
110
113
def testWillRenderFeature (self ):
111
114
vl = self .mapsettings .layers ()[0 ]
@@ -123,12 +126,12 @@ def testWillRenderFeature(self):
123
126
rendered = renderer .willRenderFeature (ft , ctx )
124
127
renderer .stopRender (ctx )
125
128
renderer .rootRule ().children ()[0 ].setActive (True )
126
- assert rendered == False
129
+ self . assertFalse ( rendered )
127
130
128
131
renderer .startRender (ctx , vl .fields ()) # build mActiveChlidren
129
132
rendered = renderer .willRenderFeature (ft , ctx )
130
133
renderer .stopRender (ctx )
131
- assert rendered == True
134
+ self . assertTrue ( rendered )
132
135
133
136
def testWillRenderFeatureNestedElse (self ):
134
137
vl = self .mapsettings .layers ()[0 ]
@@ -184,10 +187,10 @@ def testFeatureCount(self):
184
187
if rule .filterExpression () == 'ELSE' :
185
188
elseRule = rule
186
189
187
- assert elseRule != None
190
+ self . assertIsNotNone ( elseRule )
188
191
189
192
cnt = counter .featureCount (elseRule .ruleKey ())
190
- assert cnt == 1
193
+ self . assertEqual ( cnt , 1 )
191
194
192
195
def testRefineWithCategories (self ):
193
196
# Test refining rule with categories (refs #10815)
@@ -199,8 +202,8 @@ def testRefineWithCategories(self):
199
202
c = QgsCategorizedSymbolRenderer ("id" , cats )
200
203
201
204
QgsRuleBasedRenderer .refineRuleCategories (self .r2 , c )
202
- assert self .r2 .children ()[0 ].filterExpression () == '"id" = 1'
203
- assert self .r2 .children ()[1 ].filterExpression () == '"id" = 2'
205
+ self .assertEqual ( self . r2 .children ()[0 ].filterExpression (), '"id" = 1' )
206
+ self .assertEqual ( self . r2 .children ()[1 ].filterExpression (), '"id" = 2' )
204
207
205
208
# Next try with an expression based category
206
209
cats = []
@@ -209,8 +212,8 @@ def testRefineWithCategories(self):
209
212
c = QgsCategorizedSymbolRenderer ("id + 1" , cats )
210
213
211
214
QgsRuleBasedRenderer .refineRuleCategories (self .r1 , c )
212
- assert self .r1 .children ()[0 ].filterExpression () == 'id + 1 = 1'
213
- assert self .r1 .children ()[1 ].filterExpression () == 'id + 1 = 2'
215
+ self .assertEqual ( self . r1 .children ()[0 ].filterExpression (), 'id + 1 = 1' )
216
+ self .assertEqual ( self . r1 .children ()[1 ].filterExpression (), 'id + 1 = 2' )
214
217
215
218
# Last try with an expression which is just a quoted field name
216
219
cats = []
@@ -219,8 +222,8 @@ def testRefineWithCategories(self):
219
222
c = QgsCategorizedSymbolRenderer ('"id"' , cats )
220
223
221
224
QgsRuleBasedRenderer .refineRuleCategories (self .r3 , c )
222
- assert self .r3 .children ()[0 ].filterExpression () == '"id" = 1'
223
- assert self .r3 .children ()[1 ].filterExpression () == '"id" = 2'
225
+ self .assertEqual ( self . r3 .children ()[0 ].filterExpression (), '"id" = 1' )
226
+ self .assertEqual ( self . r3 .children ()[1 ].filterExpression (), '"id" = 2' )
224
227
225
228
def testRefineWithRanges (self ):
226
229
# Test refining rule with ranges (refs #10815)
@@ -232,8 +235,8 @@ def testRefineWithRanges(self):
232
235
g = QgsGraduatedSymbolRenderer ("id" , ranges )
233
236
234
237
QgsRuleBasedRenderer .refineRuleRanges (self .r2 , g )
235
- assert self .r2 .children ()[0 ].filterExpression () == '"id" >= 0.0000 AND "id" <= 1.0000'
236
- assert self .r2 .children ()[1 ].filterExpression () == '"id" > 1.0000 AND "id" <= 2.0000'
238
+ self .assertEqual ( self . r2 .children ()[0 ].filterExpression (), '"id" >= 0.0000 AND "id" <= 1.0000' )
239
+ self .assertEqual ( self . r2 .children ()[1 ].filterExpression (), '"id" > 1.0000 AND "id" <= 2.0000' )
237
240
238
241
# Next try with an expression based range
239
242
ranges = []
@@ -242,8 +245,8 @@ def testRefineWithRanges(self):
242
245
g = QgsGraduatedSymbolRenderer ("id / 2" , ranges )
243
246
244
247
QgsRuleBasedRenderer .refineRuleRanges (self .r1 , g )
245
- assert self .r1 .children ()[0 ].filterExpression () == '(id / 2) >= 0.0000 AND (id / 2) <= 1.0000'
246
- assert self .r1 .children ()[1 ].filterExpression () == '(id / 2) > 1.0000 AND (id / 2) <= 2.0000'
248
+ self .assertEqual ( self . r1 .children ()[0 ].filterExpression (), '(id / 2) >= 0.0000 AND (id / 2) <= 1.0000' )
249
+ self .assertEqual ( self . r1 .children ()[1 ].filterExpression (), '(id / 2) > 1.0000 AND (id / 2) <= 2.0000' )
247
250
248
251
# Last try with an expression which is just a quoted field name
249
252
ranges = []
@@ -252,8 +255,8 @@ def testRefineWithRanges(self):
252
255
g = QgsGraduatedSymbolRenderer ('"id"' , ranges )
253
256
254
257
QgsRuleBasedRenderer .refineRuleRanges (self .r3 , g )
255
- assert self .r3 .children ()[0 ].filterExpression () == '"id" >= 0.0000 AND "id" <= 1.0000'
256
- assert self .r3 .children ()[1 ].filterExpression () == '"id" > 1.0000 AND "id" <= 2.0000'
258
+ self .assertEqual ( self . r3 .children ()[0 ].filterExpression (), '"id" >= 0.0000 AND "id" <= 1.0000' )
259
+ self .assertEqual ( self . r3 .children ()[1 ].filterExpression (), '"id" > 1.0000 AND "id" <= 2.0000' )
257
260
258
261
def testConvertFromCategorisedRenderer (self ):
259
262
# Test converting categorised renderer to rule based
0 commit comments