Skip to content

Commit 8f8a9ac

Browse files
committedApr 17, 2018
Add test for nested rules in ELSE
1 parent a84cdd4 commit 8f8a9ac

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed
 

‎tests/src/python/test_qgsrulebasedrenderer.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,42 @@ def testWillRenderFeature(self):
125125
renderer.stopRender(ctx)
126126
assert rendered == True
127127

128+
def testWillRenderFeatureNestedElse(self):
129+
vl = self.mapsettings.layers()[0]
130+
ft = vl.getFeature(0) # 'id' = 1
131+
132+
ctx = QgsRenderContext.fromMapSettings(self.mapsettings)
133+
ctx.expressionContext().setFeature(ft)
134+
135+
# Create rulebased style
136+
sym1 = QgsFillSymbol.createSimple({'color': '#fdbf6f', 'outline_color': 'black'})
137+
sym2 = QgsFillSymbol.createSimple({'color': '#71bd6c', 'outline_color': 'black'})
138+
sym3 = QgsFillSymbol.createSimple({'color': '#1f78b4', 'outline_color': 'black'})
139+
140+
self.rx1 = QgsRuleBasedRenderer.Rule(sym1, 0, 0, '"id" = 1')
141+
self.rx2 = QgsRuleBasedRenderer.Rule(sym2, 0, 0, '"id" = 2')
142+
self.rx3 = QgsRuleBasedRenderer.Rule(sym3, 0, 0, 'ELSE')
143+
144+
self.rx3.appendChild(self.rx1)
145+
146+
rootrule = QgsRuleBasedRenderer.Rule(None)
147+
rootrule.appendChild(self.rx2)
148+
rootrule.appendChild(self.rx3)
149+
150+
vl.setRenderer(QgsRuleBasedRenderer(rootrule))
151+
renderer = vl.renderer()
152+
153+
# Reunder with else rule and all activated
154+
renderer.startRender(ctx, vl.fields())
155+
self.assertTrue(renderer.willRenderFeature(ft, ctx))
156+
renderer.stopRender(ctx)
157+
158+
# Reunder with else rule where else is deactivated
159+
renderer.rootRule().children()[1].setActive(False)
160+
renderer.startRender(ctx, vl.fields())
161+
self.assertFalse(renderer.willRenderFeature(ft, ctx))
162+
renderer.stopRender(ctx)
163+
128164
def testFeatureCount(self):
129165
vl = self.mapsettings.layers()[0]
130166
ft = vl.getFeature(2) # 'id' = 3 => ELSE

0 commit comments

Comments
 (0)
Please sign in to comment.