@@ -208,9 +208,35 @@ def testDependentLayers(self):
208
208
cache .setCacheImage ('depends' , im , [layer1 , layer2 ])
209
209
self .assertEqual (set (cache .dependentLayers ('depends' )), set ([layer1 , layer2 ]))
210
210
211
- # try deleting a layer in the meantime..
211
+ def testLayerRemoval (self ):
212
+ """test that cached image is cleared when a dependent layer is removed"""
213
+ cache = QgsMapRendererCache ()
214
+ layer1 = QgsVectorLayer ("Point?field=fldtxt:string" ,
215
+ "layer1" , "memory" )
216
+ layer2 = QgsVectorLayer ("Point?field=fldtxt:string" ,
217
+ "layer2" , "memory" )
218
+ im = QImage (200 , 200 , QImage .Format_RGB32 )
219
+ cache .setCacheImage ('depends' , im , [layer1 , layer2 ])
220
+ cache .setCacheImage ('depends2' , im , [layer1 ])
221
+ cache .setCacheImage ('depends3' , im , [layer2 ])
222
+ cache .setCacheImage ('no depends' , im , [])
223
+ self .assertTrue (cache .hasCacheImage ('depends' ))
224
+ self .assertTrue (cache .hasCacheImage ('depends2' ))
225
+ self .assertTrue (cache .hasCacheImage ('depends3' ))
226
+ self .assertTrue (cache .hasCacheImage ('no depends' ))
227
+
228
+ # try deleting a layer
212
229
layer2 = None
213
- self .assertEqual (set (cache .dependentLayers ('depends' )), set ([layer1 ]))
230
+ self .assertFalse (cache .hasCacheImage ('depends' ))
231
+ self .assertTrue (cache .hasCacheImage ('depends2' ))
232
+ self .assertFalse (cache .hasCacheImage ('depends3' ))
233
+ self .assertTrue (cache .hasCacheImage ('no depends' ))
234
+
235
+ layer1 = None
236
+ self .assertFalse (cache .hasCacheImage ('depends' ))
237
+ self .assertFalse (cache .hasCacheImage ('depends2' ))
238
+ self .assertFalse (cache .hasCacheImage ('depends3' ))
239
+ self .assertTrue (cache .hasCacheImage ('no depends' ))
214
240
215
241
216
242
if __name__ == '__main__' :
0 commit comments