Skip to content

Commit 10b1896

Browse files
committedMay 2, 2017
Move old map layer registry tests into QgsProject tests
1 parent 26afb2e commit 10b1896

File tree

3 files changed

+503
-538
lines changed

3 files changed

+503
-538
lines changed
 

‎tests/src/python/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,6 @@ ADD_PYTHON_TEST(PyQgsVectorLayer test_qgsvectorlayer.py)
145145
ADD_PYTHON_TEST(PyQgsVectorLayerEditBuffer test_qgsvectorlayereditbuffer.py)
146146
ADD_PYTHON_TEST(PyQgsVectorLayerUtils test_qgsvectorlayerutils.py)
147147
ADD_PYTHON_TEST(PyQgsZonalStatistics test_qgszonalstatistics.py)
148-
ADD_PYTHON_TEST(PyQgsMapLayerRegistry test_qgsmaplayerregistry.py)
149148
ADD_PYTHON_TEST(PyQgsVirtualLayerProvider test_provider_virtual.py)
150149
ADD_PYTHON_TEST(PyQgsVirtualLayerDefinition test_qgsvirtuallayerdefinition.py)
151150
ADD_PYTHON_TEST(PyQgsLayerDefinition test_qgslayerdefinition.py)

‎tests/src/python/test_qgsmaplayerregistry.py

Lines changed: 0 additions & 536 deletions
This file was deleted.

‎tests/src/python/test_qgsproject.py

Lines changed: 503 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,26 @@
2222
QgsApplication,
2323
QgsUnitTypes,
2424
QgsCoordinateReferenceSystem,
25-
QgsVectorLayer)
25+
QgsVectorLayer,
26+
QgsMapLayer)
2627
from qgis.gui import (QgsLayerTreeMapCanvasBridge,
2728
QgsMapCanvas)
29+
30+
from qgis.PyQt.QtTest import QSignalSpy
31+
from qgis.PyQt.QtCore import QT_VERSION_STR
32+
import sip
33+
2834
from qgis.testing import start_app, unittest
2935
from utilities import (unitTestDataPath)
3036

3137
app = start_app()
3238
TEST_DATA_DIR = unitTestDataPath()
3339

3440

41+
def createLayer(name):
42+
return QgsVectorLayer("Point?field=x:string", name, "memory")
43+
44+
3545
class TestQgsProject(unittest.TestCase):
3646

3747
def __init__(self, methodName):
@@ -181,6 +191,498 @@ def testEmbeddedGroup(self):
181191
expected = ['polys', 'lines']
182192
self.assertEqual(sorted(layers_names), sorted(expected))
183193

194+
def testInstance(self):
195+
""" test retrieving global instance """
196+
self.assertTrue(QgsProject.instance())
197+
198+
# register a layer to the singleton
199+
QgsProject.instance().addMapLayer(createLayer('test'))
200+
201+
# check that the same instance is returned
202+
self.assertEqual(len(QgsProject.instance().mapLayersByName('test')), 1)
203+
204+
QgsProject.instance().removeAllMapLayers()
205+
206+
def test_addMapLayer(self):
207+
""" test adding individual map layers to registry """
208+
QgsProject.instance().removeAllMapLayers()
209+
210+
l1 = createLayer('test')
211+
self.assertEqual(QgsProject.instance().addMapLayer(l1), l1)
212+
self.assertEqual(len(QgsProject.instance().mapLayersByName('test')), 1)
213+
self.assertEqual(QgsProject.instance().count(), 1)
214+
215+
# adding a second layer should leave existing layers intact
216+
l2 = createLayer('test2')
217+
self.assertEqual(QgsProject.instance().addMapLayer(l2), l2)
218+
self.assertEqual(len(QgsProject.instance().mapLayersByName('test')), 1)
219+
self.assertEqual(len(QgsProject.instance().mapLayersByName('test2')), 1)
220+
self.assertEqual(QgsProject.instance().count(), 2)
221+
222+
QgsProject.instance().removeAllMapLayers()
223+
224+
def test_addMapLayerAlreadyAdded(self):
225+
""" test that already added layers can't be readded to registry """
226+
QgsProject.instance().removeAllMapLayers()
227+
228+
l1 = createLayer('test')
229+
QgsProject.instance().addMapLayer(l1)
230+
self.assertEqual(len(QgsProject.instance().mapLayersByName('test')), 1)
231+
self.assertEqual(QgsProject.instance().count(), 1)
232+
self.assertEqual(QgsProject.instance().addMapLayer(l1), None)
233+
self.assertEqual(len(QgsProject.instance().mapLayersByName('test')), 1)
234+
self.assertEqual(QgsProject.instance().count(), 1)
235+
236+
QgsProject.instance().removeAllMapLayers()
237+
238+
def test_addMapLayerInvalid(self):
239+
""" test that invalid map layersd can't be added to registry """
240+
QgsProject.instance().removeAllMapLayers()
241+
242+
self.assertEqual(QgsProject.instance().addMapLayer(QgsVectorLayer("Point?field=x:string", 'test', "xxx")), None)
243+
self.assertEqual(len(QgsProject.instance().mapLayersByName('test')), 0)
244+
self.assertEqual(QgsProject.instance().count(), 0)
245+
246+
QgsProject.instance().removeAllMapLayers()
247+
248+
def test_addMapLayerSignals(self):
249+
""" test that signals are correctly emitted when adding map layer"""
250+
251+
QgsProject.instance().removeAllMapLayers()
252+
253+
layer_was_added_spy = QSignalSpy(QgsProject.instance().layerWasAdded)
254+
layers_added_spy = QSignalSpy(QgsProject.instance().layersAdded)
255+
legend_layers_added_spy = QSignalSpy(QgsProject.instance().legendLayersAdded)
256+
257+
l1 = createLayer('test')
258+
QgsProject.instance().addMapLayer(l1)
259+
260+
# can't seem to actually test the data which was emitted, so best we can do is test
261+
# the signal count
262+
self.assertEqual(len(layer_was_added_spy), 1)
263+
self.assertEqual(len(layers_added_spy), 1)
264+
self.assertEqual(len(legend_layers_added_spy), 1)
265+
266+
# layer not added to legend
267+
QgsProject.instance().addMapLayer(createLayer('test2'), False)
268+
self.assertEqual(len(layer_was_added_spy), 2)
269+
self.assertEqual(len(layers_added_spy), 2)
270+
self.assertEqual(len(legend_layers_added_spy), 1)
271+
272+
# try readding a layer already in the registry
273+
QgsProject.instance().addMapLayer(l1)
274+
# should be no extra signals emitted
275+
self.assertEqual(len(layer_was_added_spy), 2)
276+
self.assertEqual(len(layers_added_spy), 2)
277+
self.assertEqual(len(legend_layers_added_spy), 1)
278+
279+
def test_addMapLayers(self):
280+
""" test adding multiple map layers to registry """
281+
QgsProject.instance().removeAllMapLayers()
282+
283+
l1 = createLayer('test')
284+
l2 = createLayer('test2')
285+
self.assertEqual(set(QgsProject.instance().addMapLayers([l1, l2])), set([l1, l2]))
286+
self.assertEqual(len(QgsProject.instance().mapLayersByName('test')), 1)
287+
self.assertEqual(len(QgsProject.instance().mapLayersByName('test2')), 1)
288+
self.assertEqual(QgsProject.instance().count(), 2)
289+
290+
# adding more layers should leave existing layers intact
291+
l3 = createLayer('test3')
292+
l4 = createLayer('test4')
293+
self.assertEqual(set(QgsProject.instance().addMapLayers([l3, l4])), set([l3, l4]))
294+
self.assertEqual(len(QgsProject.instance().mapLayersByName('test')), 1)
295+
self.assertEqual(len(QgsProject.instance().mapLayersByName('test2')), 1)
296+
self.assertEqual(len(QgsProject.instance().mapLayersByName('test3')), 1)
297+
self.assertEqual(len(QgsProject.instance().mapLayersByName('test4')), 1)
298+
self.assertEqual(QgsProject.instance().count(), 4)
299+
300+
QgsProject.instance().removeAllMapLayers()
301+
302+
def test_addMapLayersInvalid(self):
303+
""" test that invalid map layersd can't be added to registry """
304+
QgsProject.instance().removeAllMapLayers()
305+
306+
self.assertEqual(QgsProject.instance().addMapLayers([QgsVectorLayer("Point?field=x:string", 'test', "xxx")]), [])
307+
self.assertEqual(len(QgsProject.instance().mapLayersByName('test')), 0)
308+
self.assertEqual(QgsProject.instance().count(), 0)
309+
310+
QgsProject.instance().removeAllMapLayers()
311+
312+
def test_addMapLayersAlreadyAdded(self):
313+
""" test that already added layers can't be readded to registry """
314+
QgsProject.instance().removeAllMapLayers()
315+
316+
l1 = createLayer('test')
317+
self.assertEqual(QgsProject.instance().addMapLayers([l1]), [l1])
318+
self.assertEqual(len(QgsProject.instance().mapLayersByName('test')), 1)
319+
self.assertEqual(QgsProject.instance().count(), 1)
320+
self.assertEqual(QgsProject.instance().addMapLayers([l1]), [])
321+
self.assertEqual(len(QgsProject.instance().mapLayersByName('test')), 1)
322+
self.assertEqual(QgsProject.instance().count(), 1)
323+
324+
QgsProject.instance().removeAllMapLayers()
325+
326+
def test_addMapLayersSignals(self):
327+
""" test that signals are correctly emitted when adding map layers"""
328+
QgsProject.instance().removeAllMapLayers()
329+
330+
layer_was_added_spy = QSignalSpy(QgsProject.instance().layerWasAdded)
331+
layers_added_spy = QSignalSpy(QgsProject.instance().layersAdded)
332+
legend_layers_added_spy = QSignalSpy(QgsProject.instance().legendLayersAdded)
333+
334+
l1 = createLayer('test')
335+
l2 = createLayer('test2')
336+
QgsProject.instance().addMapLayers([l1, l2])
337+
338+
# can't seem to actually test the data which was emitted, so best we can do is test
339+
# the signal count
340+
self.assertEqual(len(layer_was_added_spy), 2)
341+
self.assertEqual(len(layers_added_spy), 1)
342+
self.assertEqual(len(legend_layers_added_spy), 1)
343+
344+
# layer not added to legend
345+
QgsProject.instance().addMapLayers([createLayer('test3'), createLayer('test4')], False)
346+
self.assertEqual(len(layer_was_added_spy), 4)
347+
self.assertEqual(len(layers_added_spy), 2)
348+
self.assertEqual(len(legend_layers_added_spy), 1)
349+
350+
# try readding a layer already in the registry
351+
QgsProject.instance().addMapLayers([l1, l2])
352+
# should be no extra signals emitted
353+
self.assertEqual(len(layer_was_added_spy), 4)
354+
self.assertEqual(len(layers_added_spy), 2)
355+
self.assertEqual(len(legend_layers_added_spy), 1)
356+
357+
def test_mapLayerById(self):
358+
""" test retrieving map layer by ID """
359+
QgsProject.instance().removeAllMapLayers()
360+
361+
# test no crash with empty registry
362+
self.assertEqual(QgsProject.instance().mapLayer('bad'), None)
363+
self.assertEqual(QgsProject.instance().mapLayer(None), None)
364+
365+
l1 = createLayer('test')
366+
l2 = createLayer('test2')
367+
368+
QgsProject.instance().addMapLayers([l1, l2])
369+
370+
self.assertEqual(QgsProject.instance().mapLayer('bad'), None)
371+
self.assertEqual(QgsProject.instance().mapLayer(None), None)
372+
self.assertEqual(QgsProject.instance().mapLayer(l1.id()), l1)
373+
self.assertEqual(QgsProject.instance().mapLayer(l2.id()), l2)
374+
375+
def test_mapLayersByName(self):
376+
""" test retrieving map layer by name """
377+
p = QgsProject()
378+
379+
# test no crash with empty registry
380+
self.assertEqual(p.mapLayersByName('bad'), [])
381+
self.assertEqual(p.mapLayersByName(None), [])
382+
383+
l1 = createLayer('test')
384+
l2 = createLayer('test2')
385+
386+
p.addMapLayers([l1, l2])
387+
388+
self.assertEqual(p.mapLayersByName('bad'), [])
389+
self.assertEqual(p.mapLayersByName(None), [])
390+
self.assertEqual(p.mapLayersByName('test'), [l1])
391+
self.assertEqual(p.mapLayersByName('test2'), [l2])
392+
393+
#duplicate name
394+
l3 = createLayer('test')
395+
p.addMapLayer(l3)
396+
self.assertEqual(set(p.mapLayersByName('test')), set([l1, l3]))
397+
398+
def test_mapLayers(self):
399+
""" test retrieving map layers list """
400+
QgsProject.instance().removeAllMapLayers()
401+
402+
# test no crash with empty registry
403+
self.assertEqual(QgsProject.instance().mapLayers(), {})
404+
405+
l1 = createLayer('test')
406+
l2 = createLayer('test2')
407+
408+
QgsProject.instance().addMapLayers([l1, l2])
409+
410+
self.assertEqual(QgsProject.instance().mapLayers(), {l1.id(): l1, l2.id(): l2})
411+
412+
def test_removeMapLayersById(self):
413+
""" test removing map layers by ID """
414+
QgsProject.instance().removeAllMapLayers()
415+
416+
# test no crash with empty registry
417+
QgsProject.instance().removeMapLayers(['bad'])
418+
QgsProject.instance().removeMapLayers([None])
419+
420+
l1 = createLayer('test')
421+
l2 = createLayer('test2')
422+
l3 = createLayer('test3')
423+
424+
QgsProject.instance().addMapLayers([l1, l2, l3])
425+
self.assertEqual(QgsProject.instance().count(), 3)
426+
427+
#remove bad layers
428+
QgsProject.instance().removeMapLayers(['bad'])
429+
self.assertEqual(QgsProject.instance().count(), 3)
430+
QgsProject.instance().removeMapLayers([None])
431+
self.assertEqual(QgsProject.instance().count(), 3)
432+
433+
# remove valid layers
434+
l1_id = l1.id()
435+
QgsProject.instance().removeMapLayers([l1_id])
436+
self.assertEqual(QgsProject.instance().count(), 2)
437+
# double remove
438+
QgsProject.instance().removeMapLayers([l1_id])
439+
self.assertEqual(QgsProject.instance().count(), 2)
440+
441+
# test that layer has been deleted
442+
self.assertTrue(sip.isdeleted(l1))
443+
444+
# remove multiple
445+
QgsProject.instance().removeMapLayers([l2.id(), l3.id()])
446+
self.assertEqual(QgsProject.instance().count(), 0)
447+
self.assertTrue(sip.isdeleted(l2))
448+
449+
# try removing a layer not in the registry
450+
l4 = createLayer('test4')
451+
QgsProject.instance().removeMapLayers([l4.id()])
452+
self.assertFalse(sip.isdeleted(l4))
453+
454+
# fails on qt5 due to removeMapLayers list type conversion - needs a PyName alias
455+
# added to removeMapLayers for QGIS 3.0
456+
@unittest.expectedFailure(QT_VERSION_STR[0] == '5')
457+
def test_removeMapLayersByLayer(self):
458+
""" test removing map layers by layer"""
459+
QgsProject.instance().removeAllMapLayers()
460+
461+
# test no crash with empty registry
462+
QgsProject.instance().removeMapLayers([None])
463+
464+
l1 = createLayer('test')
465+
l2 = createLayer('test2')
466+
l3 = createLayer('test3')
467+
468+
QgsProject.instance().addMapLayers([l1, l2, l3])
469+
self.assertEqual(QgsProject.instance().count(), 3)
470+
471+
#remove bad layers
472+
QgsProject.instance().removeMapLayers([None])
473+
self.assertEqual(QgsProject.instance().count(), 3)
474+
475+
# remove valid layers
476+
QgsProject.instance().removeMapLayers([l1])
477+
self.assertEqual(QgsProject.instance().count(), 2)
478+
479+
# test that layer has been deleted
480+
self.assertTrue(sip.isdeleted(l1))
481+
482+
# remove multiple
483+
QgsProject.instance().removeMapLayers([l2, l3])
484+
self.assertEqual(QgsProject.instance().count(), 0)
485+
self.assertTrue(sip.isdeleted(l2))
486+
self.assertTrue(sip.isdeleted(l3))
487+
488+
def test_removeMapLayerById(self):
489+
""" test removing a map layer by ID """
490+
QgsProject.instance().removeAllMapLayers()
491+
492+
# test no crash with empty registry
493+
QgsProject.instance().removeMapLayer('bad')
494+
QgsProject.instance().removeMapLayer(None)
495+
496+
l1 = createLayer('test')
497+
l2 = createLayer('test2')
498+
499+
QgsProject.instance().addMapLayers([l1, l2])
500+
self.assertEqual(QgsProject.instance().count(), 2)
501+
502+
#remove bad layers
503+
QgsProject.instance().removeMapLayer('bad')
504+
self.assertEqual(QgsProject.instance().count(), 2)
505+
QgsProject.instance().removeMapLayer(None)
506+
self.assertEqual(QgsProject.instance().count(), 2)
507+
508+
# remove valid layers
509+
l1_id = l1.id()
510+
QgsProject.instance().removeMapLayer(l1_id)
511+
self.assertEqual(QgsProject.instance().count(), 1)
512+
# double remove
513+
QgsProject.instance().removeMapLayer(l1_id)
514+
self.assertEqual(QgsProject.instance().count(), 1)
515+
516+
# test that layer has been deleted
517+
self.assertTrue(sip.isdeleted(l1))
518+
519+
# remove second layer
520+
QgsProject.instance().removeMapLayer(l2.id())
521+
self.assertEqual(QgsProject.instance().count(), 0)
522+
self.assertTrue(sip.isdeleted(l2))
523+
524+
# try removing a layer not in the registry
525+
l3 = createLayer('test3')
526+
QgsProject.instance().removeMapLayer(l3.id())
527+
self.assertFalse(sip.isdeleted(l3))
528+
529+
def test_removeMapLayerByLayer(self):
530+
""" test removing a map layer by layer """
531+
QgsProject.instance().removeAllMapLayers()
532+
533+
# test no crash with empty registry
534+
QgsProject.instance().removeMapLayer('bad')
535+
QgsProject.instance().removeMapLayer(None)
536+
537+
l1 = createLayer('test')
538+
l2 = createLayer('test2')
539+
540+
QgsProject.instance().addMapLayers([l1, l2])
541+
self.assertEqual(QgsProject.instance().count(), 2)
542+
543+
#remove bad layers
544+
QgsProject.instance().removeMapLayer(None)
545+
self.assertEqual(QgsProject.instance().count(), 2)
546+
l3 = createLayer('test3')
547+
QgsProject.instance().removeMapLayer(l3)
548+
self.assertEqual(QgsProject.instance().count(), 2)
549+
550+
# remove valid layers
551+
QgsProject.instance().removeMapLayer(l1)
552+
self.assertEqual(QgsProject.instance().count(), 1)
553+
554+
# test that layer has been deleted
555+
self.assertTrue(sip.isdeleted(l1))
556+
557+
# remove second layer
558+
QgsProject.instance().removeMapLayer(l2)
559+
self.assertEqual(QgsProject.instance().count(), 0)
560+
self.assertTrue(sip.isdeleted(l2))
561+
562+
# try removing a layer not in the registry
563+
l3 = createLayer('test3')
564+
QgsProject.instance().removeMapLayer(l3)
565+
self.assertFalse(sip.isdeleted(l3))
566+
567+
def test_removeAllMapLayers(self):
568+
""" test removing all map layers from registry """
569+
QgsProject.instance().removeAllMapLayers()
570+
l1 = createLayer('test')
571+
l2 = createLayer('test2')
572+
573+
QgsProject.instance().addMapLayers([l1, l2])
574+
self.assertEqual(QgsProject.instance().count(), 2)
575+
QgsProject.instance().removeAllMapLayers()
576+
self.assertEqual(QgsProject.instance().count(), 0)
577+
self.assertEqual(QgsProject.instance().mapLayersByName('test'), [])
578+
self.assertEqual(QgsProject.instance().mapLayersByName('test2'), [])
579+
580+
def test_addRemoveLayersSignals(self):
581+
""" test that signals are correctly emitted when removing map layers"""
582+
QgsProject.instance().removeAllMapLayers()
583+
584+
layers_will_be_removed_spy = QSignalSpy(QgsProject.instance().layersWillBeRemoved)
585+
layer_will_be_removed_spy_str = QSignalSpy(QgsProject.instance().layerWillBeRemoved[str])
586+
layer_will_be_removed_spy_layer = QSignalSpy(QgsProject.instance().layerWillBeRemoved[QgsMapLayer])
587+
layers_removed_spy = QSignalSpy(QgsProject.instance().layersRemoved)
588+
layer_removed_spy = QSignalSpy(QgsProject.instance().layerRemoved)
589+
remove_all_spy = QSignalSpy(QgsProject.instance().removeAll)
590+
591+
l1 = createLayer('l1')
592+
l2 = createLayer('l2')
593+
l3 = createLayer('l3')
594+
l4 = createLayer('l4')
595+
QgsProject.instance().addMapLayers([l1, l2, l3, l4])
596+
597+
# remove 1 layer
598+
QgsProject.instance().removeMapLayer(l1)
599+
# can't seem to actually test the data which was emitted, so best we can do is test
600+
# the signal count
601+
self.assertEqual(len(layers_will_be_removed_spy), 1)
602+
self.assertEqual(len(layer_will_be_removed_spy_str), 1)
603+
self.assertEqual(len(layer_will_be_removed_spy_layer), 1)
604+
self.assertEqual(len(layers_removed_spy), 1)
605+
self.assertEqual(len(layer_removed_spy), 1)
606+
self.assertEqual(len(remove_all_spy), 0)
607+
self.assertEqual(QgsProject.instance().count(), 3)
608+
609+
# remove 2 layers at once
610+
QgsProject.instance().removeMapLayers([l2.id(), l3.id()])
611+
self.assertEqual(len(layers_will_be_removed_spy), 2)
612+
self.assertEqual(len(layer_will_be_removed_spy_str), 3)
613+
self.assertEqual(len(layer_will_be_removed_spy_layer), 3)
614+
self.assertEqual(len(layers_removed_spy), 2)
615+
self.assertEqual(len(layer_removed_spy), 3)
616+
self.assertEqual(len(remove_all_spy), 0)
617+
self.assertEqual(QgsProject.instance().count(), 1)
618+
619+
# remove all
620+
QgsProject.instance().removeAllMapLayers()
621+
self.assertEqual(len(layers_will_be_removed_spy), 3)
622+
self.assertEqual(len(layer_will_be_removed_spy_str), 4)
623+
self.assertEqual(len(layer_will_be_removed_spy_layer), 4)
624+
self.assertEqual(len(layers_removed_spy), 3)
625+
self.assertEqual(len(layer_removed_spy), 4)
626+
self.assertEqual(len(remove_all_spy), 1)
627+
628+
#remove some layers which aren't in the registry
629+
QgsProject.instance().removeMapLayers(['asdasd'])
630+
self.assertEqual(len(layers_will_be_removed_spy), 3)
631+
self.assertEqual(len(layer_will_be_removed_spy_str), 4)
632+
self.assertEqual(len(layer_will_be_removed_spy_layer), 4)
633+
self.assertEqual(len(layers_removed_spy), 3)
634+
self.assertEqual(len(layer_removed_spy), 4)
635+
self.assertEqual(len(remove_all_spy), 1)
636+
637+
l5 = createLayer('test5')
638+
QgsProject.instance().removeMapLayer(l5)
639+
self.assertEqual(len(layers_will_be_removed_spy), 3)
640+
self.assertEqual(len(layer_will_be_removed_spy_str), 4)
641+
self.assertEqual(len(layer_will_be_removed_spy_layer), 4)
642+
self.assertEqual(len(layers_removed_spy), 3)
643+
self.assertEqual(len(layer_removed_spy), 4)
644+
self.assertEqual(len(remove_all_spy), 1)
645+
646+
def test_RemoveLayerShouldNotSegFault(self):
647+
QgsProject.instance().removeAllMapLayers()
648+
649+
reg = QgsProject.instance()
650+
# Should not segfault
651+
reg.removeMapLayers(['not_exists'])
652+
reg.removeMapLayer('not_exists2')
653+
654+
# check also that the removal of an unexistent layer does not insert a null layer
655+
for k, layer in list(reg.mapLayers().items()):
656+
assert(layer is not None)
657+
658+
def testTakeLayer(self):
659+
# test taking ownership of a layer from the project
660+
l1 = createLayer('l1')
661+
l2 = createLayer('l2')
662+
p = QgsProject()
663+
664+
# add one layer to project
665+
p.addMapLayer(l1)
666+
self.assertEqual(p.mapLayers(), {l1.id(): l1})
667+
self.assertEqual(l1.parent().parent(), p)
668+
669+
# try taking some layers which don't exist in project
670+
self.assertFalse(p.takeMapLayer(None))
671+
self.assertFalse(p.takeMapLayer(l2))
672+
# but l2 should still exist..
673+
self.assertTrue(l2.isValid())
674+
675+
# take layer from project
676+
self.assertEqual(p.takeMapLayer(l1), l1)
677+
self.assertFalse(p.mapLayers()) # no layers left
678+
# but l1 should still exist
679+
self.assertTrue(l1.isValid())
680+
# layer should have no parent now
681+
self.assertFalse(l1.parent())
682+
683+
# destroy project
684+
p = None
685+
self.assertTrue(l1.isValid())
184686

185687
if __name__ == '__main__':
186688
unittest.main()

0 commit comments

Comments
 (0)
Please sign in to comment.