Skip to content

Commit 0b9f04d

Browse files
committedNov 11, 2019
Harden rule based renderer test
or shall I say desperately hack around issues in the hope it helps?
1 parent 5eeba90 commit 0b9f04d

File tree

1 file changed

+25
-22
lines changed

1 file changed

+25
-22
lines changed
 

‎tests/src/python/test_qgsrulebasedrenderer.py

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,12 @@
5959

6060
class TestQgsRulebasedRenderer(unittest.TestCase):
6161

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+
6268
def setUp(self):
6369
myShpFile = os.path.join(TEST_DATA_DIR, 'rectangles.shp')
6470
layer = QgsVectorLayer(myShpFile, 'Rectangles', 'ogr')
@@ -86,15 +92,14 @@ def setUp(self):
8692

8793
rendered_layers = [layer]
8894
self.mapsettings.setLayers(rendered_layers)
95+
self.mapsettings_archive.append(self.mapsettings)
8996

9097
def testElse(self):
9198
# Setup rendering check
9299
renderchecker = QgsMultiRenderChecker()
93100
renderchecker.setMapSettings(self.mapsettings)
94101
renderchecker.setControlName('expected_rulebased_else')
95-
result = renderchecker.runTest('rulebased_else')
96-
97-
assert result
102+
self.assertTrue(renderchecker.runTest('rulebased_else'))
98103

99104
def testDisabledElse(self):
100105
# Disable a rule and assert that it's hidden not rendered with else
@@ -103,9 +108,7 @@ def testDisabledElse(self):
103108
renderchecker = QgsMultiRenderChecker()
104109
renderchecker.setMapSettings(self.mapsettings)
105110
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'))
109112

110113
def testWillRenderFeature(self):
111114
vl = self.mapsettings.layers()[0]
@@ -123,12 +126,12 @@ def testWillRenderFeature(self):
123126
rendered = renderer.willRenderFeature(ft, ctx)
124127
renderer.stopRender(ctx)
125128
renderer.rootRule().children()[0].setActive(True)
126-
assert rendered == False
129+
self.assertFalse(rendered)
127130

128131
renderer.startRender(ctx, vl.fields()) # build mActiveChlidren
129132
rendered = renderer.willRenderFeature(ft, ctx)
130133
renderer.stopRender(ctx)
131-
assert rendered == True
134+
self.assertTrue(rendered)
132135

133136
def testWillRenderFeatureNestedElse(self):
134137
vl = self.mapsettings.layers()[0]
@@ -184,10 +187,10 @@ def testFeatureCount(self):
184187
if rule.filterExpression() == 'ELSE':
185188
elseRule = rule
186189

187-
assert elseRule != None
190+
self.assertIsNotNone(elseRule)
188191

189192
cnt = counter.featureCount(elseRule.ruleKey())
190-
assert cnt == 1
193+
self.assertEqual(cnt, 1)
191194

192195
def testRefineWithCategories(self):
193196
# Test refining rule with categories (refs #10815)
@@ -199,8 +202,8 @@ def testRefineWithCategories(self):
199202
c = QgsCategorizedSymbolRenderer("id", cats)
200203

201204
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')
204207

205208
# Next try with an expression based category
206209
cats = []
@@ -209,8 +212,8 @@ def testRefineWithCategories(self):
209212
c = QgsCategorizedSymbolRenderer("id + 1", cats)
210213

211214
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')
214217

215218
# Last try with an expression which is just a quoted field name
216219
cats = []
@@ -219,8 +222,8 @@ def testRefineWithCategories(self):
219222
c = QgsCategorizedSymbolRenderer('"id"', cats)
220223

221224
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')
224227

225228
def testRefineWithRanges(self):
226229
# Test refining rule with ranges (refs #10815)
@@ -232,8 +235,8 @@ def testRefineWithRanges(self):
232235
g = QgsGraduatedSymbolRenderer("id", ranges)
233236

234237
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')
237240

238241
# Next try with an expression based range
239242
ranges = []
@@ -242,8 +245,8 @@ def testRefineWithRanges(self):
242245
g = QgsGraduatedSymbolRenderer("id / 2", ranges)
243246

244247
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')
247250

248251
# Last try with an expression which is just a quoted field name
249252
ranges = []
@@ -252,8 +255,8 @@ def testRefineWithRanges(self):
252255
g = QgsGraduatedSymbolRenderer('"id"', ranges)
253256

254257
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')
257260

258261
def testConvertFromCategorisedRenderer(self):
259262
# Test converting categorised renderer to rule based

0 commit comments

Comments
 (0)
Please sign in to comment.