@@ -58,20 +58,31 @@ def test_algs(self):
5858 parameters = {}
5959 parameters ['INPUT' ] = QgsProcessingFeatureSourceDefinition (self .vl .id (), True )
6060 parameters ['OUTPUT' ] = 'memory:'
61+ parameters ['DELTA_X' ] = 1.1
62+ parameters ['DELTA_Y' ] = 1.1
6163
6264 context = QgsProcessingContext ()
6365 feedback = QgsProcessingFeedback ()
6466 self .assertTrue (alg .prepare (parameters , context , feedback ))
6567
68+ self .assertTrue (self .vl .startEditing ())
69+
70+ field_idxs = range (len (self .vl .fields ()))
71+
72+ new_features = {}
6673 for f in self .vl .getFeatures ():
6774 new_f = alg .processFeature (f , context , feedback )[0 ]
75+ new_features [f .id ()] = new_f
6876 self .assertEqual (new_f .id (), f .id ())
77+ # This alg does change the geometry!
78+ self .vl .changeGeometry (f .id (), new_f .geometry ())
79+ # This alg does not change attrs but some other might do
80+ self .vl .changeAttributeValues (f .id (), dict (zip (field_idxs , new_f .attributes ())), dict (zip (field_idxs , f .attributes ())))
6981
70- from IPython import embed ; embed ()
71-
72-
73-
82+ self .assertTrue (self .vl .commitChanges ())
7483
84+ for f in self .vl .getFeatures ():
85+ self .assertEqual (new_features [f .id ()].geometry ().asWkt (), f .geometry ().asWkt ())
7586
7687
7788if __name__ == '__main__' :
0 commit comments