def testSuccess(self): """test successfully writing a layer""" self.layer = self.createLayer() options = QgsVectorFileWriter.SaveVectorOptions() tmp = create_temp_filename('successlayer.shp') task = QgsVectorFileWriterTask(self.layer, tmp, options) task.writeComplete.connect(self.onSuccess) task.errorOccurred.connect(self.onFail) QgsApplication.taskManager().addTask(task) while not self.success and not self.fail: QCoreApplication.processEvents() self.assertTrue(self.success) self.assertFalse(self.fail)
def testLayerRemovalBeforeRun(self): """test behavior when layer is removed before task begins""" self.layer = self.createLayer() options = QgsVectorFileWriter.SaveVectorOptions() tmp = create_temp_filename('fail.shp') task = QgsVectorFileWriterTask(self.layer, tmp, options) task.writeComplete.connect(self.onSuccess) task.errorOccurred.connect(self.onFail) # remove layer self.layer = None QgsApplication.taskManager().addTask(task) while not self.success and not self.fail: QCoreApplication.processEvents() self.assertFalse(self.success) self.assertTrue(self.fail)
def testSuccessWithLayer(self): """test successfully writing to a layer-enabled format""" self.layer = self.createLayer() options = QgsVectorFileWriter.SaveVectorOptions() options.driverName = "KML" options.layerName = "test-dashes" tmp = create_temp_filename('successlayer.kml') task = QgsVectorFileWriterTask(self.layer, tmp, options) task.completed.connect(self.onComplete) task.errorOccurred.connect(self.onFail) QgsApplication.taskManager().addTask(task) while not self.success and not self.fail: QCoreApplication.processEvents() self.assertEqual(self.new_layer, "test_dashes") self.assertTrue(self.success) self.assertFalse(self.fail)
def testFieldValueConverter(self): """test no crash when fieldValueConverter is used""" self.layer = self.createLayer() options = QgsVectorFileWriter.SaveVectorOptions() converter = QgsVectorFileWriter.FieldValueConverter() options.fieldValueConverter = converter tmp = create_temp_filename('converter.shp') task = QgsVectorFileWriterTask(self.layer, tmp, options) task.writeComplete.connect(self.onSuccess) task.errorOccurred.connect(self.onFail) del converter QgsApplication.taskManager().addTask(task) while not self.success and not self.fail: QCoreApplication.processEvents() self.assertTrue(self.success) self.assertFalse(self.fail)