mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-15 00:02:52 -04:00
[processing] added test for SAGA output to non-ascii files
This commit is contained in:
parent
d627b561be
commit
8bbd55943a
@ -29,7 +29,16 @@ import nose2
|
||||
import shutil
|
||||
|
||||
from qgis.core import (QgsProcessingParameterNumber,
|
||||
QgsProcessingParameterDefinition)
|
||||
QgsProcessingParameterDefinition,
|
||||
QgsVectorLayer,
|
||||
QgsApplication,
|
||||
QgsFeature,
|
||||
QgsGeometry,
|
||||
QgsPointXY,
|
||||
QgsProcessingContext,
|
||||
QgsProject,
|
||||
QgsProcessingFeedback,
|
||||
QgsProcessingFeatureSourceDefinition)
|
||||
from qgis.testing import start_app, unittest
|
||||
|
||||
from processing.algs.saga.SagaParameters import Parameters, SagaImageOutputParam
|
||||
@ -45,6 +54,9 @@ class TestSagaAlgorithms(unittest.TestCase, AlgorithmsTestBase.AlgorithmsTest):
|
||||
Processing.initialize()
|
||||
cls.cleanup_paths = []
|
||||
|
||||
cls.temp_dir = tempfile.mkdtemp()
|
||||
cls.cleanup_paths.append(cls.temp_dir)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
from processing.core.Processing import Processing
|
||||
@ -82,6 +94,49 @@ class TestSagaAlgorithms(unittest.TestCase, AlgorithmsTestBase.AlgorithmsTest):
|
||||
self.assertEqual(param.defaultFileExtension(), 'tif')
|
||||
self.assertEqual(param.supportedOutputRasterLayerExtensions(), ['tif'])
|
||||
|
||||
def test_non_ascii_output(self):
|
||||
# create a memory layer and add to project and context
|
||||
layer = QgsVectorLayer("Point?crs=epsg:3857&field=fldtxt:string&field=fldint:integer",
|
||||
"testmem", "memory")
|
||||
self.assertTrue(layer.isValid())
|
||||
pr = layer.dataProvider()
|
||||
f = QgsFeature()
|
||||
f.setAttributes(["test", 123])
|
||||
f.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(100, 200)))
|
||||
f2 = QgsFeature()
|
||||
f2.setAttributes(["test2", 457])
|
||||
f2.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(110, 200)))
|
||||
self.assertTrue(pr.addFeatures([f, f2]))
|
||||
self.assertEqual(layer.featureCount(), 2)
|
||||
QgsProject.instance().addMapLayer(layer)
|
||||
context = QgsProcessingContext()
|
||||
context.setProject(QgsProject.instance())
|
||||
|
||||
alg = QgsApplication.processingRegistry().createAlgorithmById('saga:fixeddistancebuffer')
|
||||
self.assertIsNotNone(alg)
|
||||
|
||||
temp_file = os.path.join(self.temp_dir, 'non_ascii_ñññ.gpkg')
|
||||
parameters = {'SHAPES':'testmem',
|
||||
'DIST_FIELD_DEFAULT':5,
|
||||
'NZONES':1,
|
||||
'DARC':5,
|
||||
'DISSOLVE':True,
|
||||
'POLY_INNER':False,
|
||||
'BUFFER':temp_file}
|
||||
feedback = QgsProcessingFeedback()
|
||||
|
||||
results, ok = alg.run(parameters, context, feedback)
|
||||
self.assertTrue(ok)
|
||||
self.assertTrue(os.path.exists(temp_file))
|
||||
|
||||
# make sure that layer has correct features
|
||||
res = QgsVectorLayer(temp_file, 'res')
|
||||
self.assertTrue(res.isValid())
|
||||
self.assertEqual(res.featureCount(), 2)
|
||||
|
||||
QgsProject.instance().removeMapLayer(layer)
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
nose2.main()
|
||||
|
Loading…
x
Reference in New Issue
Block a user