Skip to content

Commit 9858646

Browse files
committed
[processing] add test for output to GPKG
1 parent 8aa56fc commit 9858646

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

python/plugins/processing/tests/Grass7AlgorithmsVectorTest.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,61 @@ def testFeatureSourceInput(self):
186186

187187
QgsProject.instance().removeMapLayer(layer)
188188

189+
def testOutputToGeopackage(self):
190+
# create a memory layer and add to project and context
191+
layer = QgsVectorLayer("Point?crs=epsg:3857&field=fldtxt:string&field=fldint:integer",
192+
"testmem", "memory")
193+
self.assertTrue(layer.isValid())
194+
pr = layer.dataProvider()
195+
f = QgsFeature()
196+
f.setAttributes(["test", 123])
197+
f.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(100, 200)))
198+
f2 = QgsFeature()
199+
f2.setAttributes(["test2", 457])
200+
f2.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(110, 200)))
201+
self.assertTrue(pr.addFeatures([f, f2]))
202+
self.assertEqual(layer.featureCount(), 2)
203+
QgsProject.instance().addMapLayer(layer)
204+
context = QgsProcessingContext()
205+
context.setProject(QgsProject.instance())
206+
207+
alg = QgsApplication.processingRegistry().createAlgorithmById('grass7:v.buffer')
208+
self.assertIsNotNone(alg)
209+
210+
temp_file = os.path.join(self.temp_dir, 'grass_output.gpkg')
211+
parameters = {'input': 'testmem',
212+
'cats': '',
213+
'where': '',
214+
'type': [0, 1, 4],
215+
'distance': 1,
216+
'minordistance': None,
217+
'angle': 0,
218+
'column': None,
219+
'scale': 1,
220+
'tolerance': 0.01,
221+
'-s': False,
222+
'-c': False,
223+
'-t': False,
224+
'output': temp_file,
225+
'GRASS_REGION_PARAMETER': None,
226+
'GRASS_SNAP_TOLERANCE_PARAMETER': -1,
227+
'GRASS_MIN_AREA_PARAMETER': 0.0001,
228+
'GRASS_OUTPUT_TYPE_PARAMETER': 0,
229+
'GRASS_VECTOR_DSCO': '',
230+
'GRASS_VECTOR_LCO': ''}
231+
feedback = QgsProcessingFeedback()
232+
233+
results, ok = alg.run(parameters, context, feedback)
234+
self.assertTrue(ok)
235+
self.assertTrue(os.path.exists(temp_file))
236+
237+
# make sure that layer has correct features
238+
res = QgsVectorLayer(temp_file, 'res')
239+
self.assertTrue(res.isValid())
240+
self.assertEqual(res.featureCount(), 2)
241+
242+
QgsProject.instance().removeMapLayer(layer)
243+
189244

190245
if __name__ == '__main__':
191246
nose2.main()

0 commit comments

Comments
 (0)