|
19 | 19 | QgsVectorLayer,
|
20 | 20 | QgsFeature,
|
21 | 21 | QgsGeometry,
|
22 |
| - QgsPoint) |
| 22 | + QgsPoint, |
| 23 | + QgsField, |
| 24 | + QgsFields, |
| 25 | + QgsCoordinateReferenceSystem, |
| 26 | + QgsProxyFeatureSink) |
| 27 | +from qgis.PyQt.QtCore import QVariant |
23 | 28 | from qgis.testing import start_app, unittest
|
24 | 29 | start_app()
|
25 | 30 |
|
@@ -62,6 +67,34 @@ def testFromIterator(self):
|
62 | 67 | vals = [f['fldint'] for f in store.features()]
|
63 | 68 | self.assertEqual(vals, [123, 457, 888, -1, 0])
|
64 | 69 |
|
| 70 | + def testProxyFeatureSink(self): |
| 71 | + fields = QgsFields() |
| 72 | + fields.append(QgsField('fldtxt', QVariant.String)) |
| 73 | + fields.append(QgsField('fldint', QVariant.Int)) |
| 74 | + |
| 75 | + store = QgsFeatureStore(fields, QgsCoordinateReferenceSystem()) |
| 76 | + proxy = QgsProxyFeatureSink(store) |
| 77 | + |
| 78 | + self.assertEqual(len(store), 0) |
| 79 | + |
| 80 | + f = QgsFeature() |
| 81 | + f.setAttributes(["test", 123]) |
| 82 | + f.setGeometry(QgsGeometry.fromPoint(QgsPoint(100, 200))) |
| 83 | + proxy.addFeature(f) |
| 84 | + self.assertEqual(len(store), 1) |
| 85 | + self.assertEqual(store.features()[0]['fldtxt'], 'test') |
| 86 | + |
| 87 | + f2 = QgsFeature() |
| 88 | + f2.setAttributes(["test2", 457]) |
| 89 | + f2.setGeometry(QgsGeometry.fromPoint(QgsPoint(200, 200))) |
| 90 | + f3 = QgsFeature() |
| 91 | + f3.setAttributes(["test3", 888]) |
| 92 | + f3.setGeometry(QgsGeometry.fromPoint(QgsPoint(300, 200))) |
| 93 | + proxy.addFeatures([f2, f3]) |
| 94 | + self.assertEqual(len(store), 3) |
| 95 | + self.assertEqual(store.features()[1]['fldtxt'], 'test2') |
| 96 | + self.assertEqual(store.features()[2]['fldtxt'], 'test3') |
| 97 | + |
65 | 98 |
|
66 | 99 | if __name__ == '__main__':
|
67 | 100 | unittest.main()
|
0 commit comments