Skip to content

Commit 2cede13

Browse files
committedOct 18, 2022
add selected features test
1 parent e3bf816 commit 2cede13

File tree

1 file changed

+40
-9
lines changed

1 file changed

+40
-9
lines changed
 

‎tests/src/python/test_qgsvectorlayereditutils.py

Lines changed: 40 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def createEmptyPolygonLayer():
5151
return layer
5252

5353

54-
class TestQgsVectorLayerEditBuffer(unittest.TestCase):
54+
class TestQgsVectorLayerEditUtils(unittest.TestCase):
5555

5656
def testAddRing(self):
5757
# test adding ring to a vector layer
@@ -111,7 +111,7 @@ def testAddRingOverlappedFeatures(self):
111111
assert layer.getFeature(1).geometry().asWkt() == "Polygon ((0 0, 5 0, 5 5, 0 5, 0 0),(3 3, 3 4, 4 4, 4 3, 3 3))"
112112
assert layer.getFeature(2).geometry().asWkt() == "Polygon ((2 2, 6 2, 6 6, 2 6, 2 2))"
113113

114-
def testAddMultiRingNotEditable(self):
114+
def testAddRingV2NotEditable(self):
115115
# test adding ring on multi features
116116
# layer not editable
117117
layer = createEmptyPolygonLayer()
@@ -127,13 +127,15 @@ def testAddMultiRingNotEditable(self):
127127
layer.commitChanges()
128128

129129
vle = QgsVectorLayerEditUtils(layer)
130-
assert Qgis.GeometryOperationResult.LayerNotEditable == vle.addRingV2(QgsLineString([QgsPoint(3, 3), QgsPoint(3, 4), QgsPoint(4, 4), QgsPoint(4, 3), QgsPoint(3, 3)]))
130+
result = vle.addRingV2(QgsLineString([QgsPoint(3, 3), QgsPoint(3, 4), QgsPoint(4, 4), QgsPoint(4, 3), QgsPoint(3, 3)]))
131+
assert Qgis.GeometryOperationResult.LayerNotEditable == result[0]
132+
assert [] == result[1]
131133
layer.commitChanges()
132134

133135
assert layer.getFeature(1).geometry().asWkt() == "Polygon ((0 0, 5 0, 5 5, 0 5, 0 0))"
134136
assert layer.getFeature(2).geometry().asWkt() == "Polygon ((2 2, 6 2, 6 6, 2 6, 2 2))"
135137

136-
def testAddMultiRingNotClosedRing(self):
138+
def testAddRingV2NotClosedRing(self):
137139
# test adding ring on multi features
138140
# Not closed ring
139141
layer = createEmptyPolygonLayer()
@@ -148,13 +150,15 @@ def testAddMultiRingNotClosedRing(self):
148150
assert layer.featureCount() == 2
149151

150152
vle = QgsVectorLayerEditUtils(layer)
151-
assert Qgis.GeometryOperationResult.AddRingNotClosed == vle.addRingV2(QgsLineString([QgsPoint(3, 3), QgsPoint(3, 4), QgsPoint(4, 4), QgsPoint(4, 3)]))
153+
result = vle.addRingV2(QgsLineString([QgsPoint(3, 3), QgsPoint(3, 4), QgsPoint(4, 4), QgsPoint(4, 3)]))
154+
assert Qgis.GeometryOperationResult.AddRingNotClosed == result[0]
155+
assert [] == result[1]
152156
layer.commitChanges()
153157

154158
assert layer.getFeature(1).geometry().asWkt() == "Polygon ((0 0, 5 0, 5 5, 0 5, 0 0))"
155159
assert layer.getFeature(2).geometry().asWkt() == "Polygon ((2 2, 6 2, 6 6, 2 6, 2 2))"
156160

157-
def testAddMultiRingOutside(self):
161+
def testAddRingV2Outside(self):
158162
# test adding ring on multi features
159163
# Not In Existing Feature
160164
layer = createEmptyPolygonLayer()
@@ -169,13 +173,15 @@ def testAddMultiRingOutside(self):
169173
assert layer.featureCount() == 2
170174

171175
vle = QgsVectorLayerEditUtils(layer)
172-
assert Qgis.GeometryOperationResult.AddRingNotInExistingFeature == vle.addRingV2(QgsLineString([QgsPoint(8, 8), QgsPoint(8, 9), QgsPoint(9, 9), QgsPoint(9, 8), QgsPoint(8, 8)]))
176+
result = vle.addRingV2(QgsLineString([QgsPoint(8, 8), QgsPoint(8, 9), QgsPoint(9, 9), QgsPoint(9, 8), QgsPoint(8, 8)]))
177+
assert Qgis.GeometryOperationResult.AddRingNotInExistingFeature == result[0]
178+
assert [] == result[1]
173179
layer.commitChanges()
174180

175181
assert layer.getFeature(1).geometry().asWkt() == "Polygon ((0 0, 5 0, 5 5, 0 5, 0 0))"
176182
assert layer.getFeature(2).geometry().asWkt() == "Polygon ((2 2, 6 2, 6 6, 2 6, 2 2))"
177183

178-
def testAddMultiRing(self):
184+
def testAddRingV2(self):
179185
# test adding ring on multi features
180186
layer = createEmptyPolygonLayer()
181187
self.assertTrue(layer.startEditing())
@@ -189,12 +195,37 @@ def testAddMultiRing(self):
189195
assert layer.featureCount() == 2
190196

191197
vle = QgsVectorLayerEditUtils(layer)
192-
assert Qgis.GeometryOperationResult.Success == vle.addRingV2(QgsLineString([QgsPoint(3, 3), QgsPoint(3, 4), QgsPoint(4, 4), QgsPoint(4, 3), QgsPoint(3, 3)]))
198+
result = vle.addRingV2(QgsLineString([QgsPoint(3, 3), QgsPoint(3, 4), QgsPoint(4, 4), QgsPoint(4, 3), QgsPoint(3, 3)]))
199+
assert Qgis.GeometryOperationResult.Success == result[0]
200+
assert [2, 1] == result[1]
193201
layer.commitChanges()
194202

195203
assert layer.getFeature(1).geometry().asWkt() == "Polygon ((0 0, 5 0, 5 5, 0 5, 0 0),(3 3, 3 4, 4 4, 4 3, 3 3))"
196204
assert layer.getFeature(2).geometry().asWkt() == "Polygon ((2 2, 6 2, 6 6, 2 6, 2 2),(3 3, 3 4, 4 4, 4 3, 3 3))"
197205

206+
def testAddRingV2SelectedFeatures(self):
207+
# test adding ring on multi features
208+
# test selected features
209+
layer = createEmptyPolygonLayer()
210+
self.assertTrue(layer.startEditing())
211+
212+
pr = layer.dataProvider()
213+
f1 = QgsFeature(layer.fields(), 1)
214+
f1.setGeometry(QgsGeometry.fromWkt('POLYGON((0 0, 5 0, 5 5, 0 5, 0 0))'))
215+
f2 = QgsFeature(layer.fields(), 1)
216+
f2.setGeometry(QgsGeometry.fromWkt('POLYGON((2 2, 6 2, 6 6, 2 6, 2 2))'))
217+
assert pr.addFeatures([f1, f2])
218+
assert layer.featureCount() == 2
219+
220+
vle = QgsVectorLayerEditUtils(layer)
221+
result = vle.addRingV2(QgsLineString([QgsPoint(3, 3), QgsPoint(3, 4), QgsPoint(4, 4), QgsPoint(4, 3), QgsPoint(3, 3)]), [1])
222+
assert Qgis.GeometryOperationResult.Success == result[0]
223+
assert [1] == result[1]
224+
layer.commitChanges()
225+
226+
assert layer.getFeature(1).geometry().asWkt() == "Polygon ((0 0, 5 0, 5 5, 0 5, 0 0),(3 3, 3 4, 4 4, 4 3, 3 3))"
227+
assert layer.getFeature(2).geometry().asWkt() == "Polygon ((2 2, 6 2, 6 6, 2 6, 2 2))"
228+
198229

199230
if __name__ == '__main__':
200231
unittest.main()

0 commit comments

Comments
 (0)
Please sign in to comment.