def testLayerOrder(self): """ test project layer order""" prj = QgsProject() layer = QgsVectorLayer("Point?field=fldtxt:string", "layer1", "memory") layer2 = QgsVectorLayer("Point?field=fldtxt:string", "layer2", "memory") layer3 = QgsVectorLayer("Point?field=fldtxt:string", "layer3", "memory") prj.addMapLayers([layer, layer2, layer3]) layer_order_changed_spy = QSignalSpy(prj.layerOrderChanged) prj.setLayerOrder([layer2, layer]) self.assertEqual(len(layer_order_changed_spy), 1) prj.setLayerOrder([layer2, layer]) self.assertEqual(len(layer_order_changed_spy), 1) # no signal, order not changed self.assertEqual(prj.layerOrder(), [layer2, layer]) prj.setLayerOrder([layer]) self.assertEqual(prj.layerOrder(), [layer]) self.assertEqual(len(layer_order_changed_spy), 2) # remove a layer prj.setLayerOrder([layer2, layer, layer3]) self.assertEqual(len(layer_order_changed_spy), 3) prj.removeMapLayer(layer) self.assertEqual(prj.layerOrder(), [layer2, layer3]) self.assertEqual(len(layer_order_changed_spy), 3) # should be no signal # save and restore file_name = os.path.join(str(QDir.tempPath()), 'proj.qgs') prj.setFileName(file_name) prj.write() prj2 = QgsProject() prj2.setFileName(file_name) prj2.read() self.assertEqual([l.id() for l in prj2.layerOrder()], [layer2.id(), layer3.id()]) # clear project prj.clear() self.assertEqual(prj.layerOrder(), [])