15
15
import qgis # NOQA
16
16
17
17
import os
18
- from qgis .core import QgsFeature , QgsGeometry , QgsPoint , QgsVectorLayer , NULL
18
+ from qgis .core import QgsFeature , QgsGeometry , QgsPoint , QgsVectorLayer , NULL , QgsFields , QgsField
19
19
from qgis .testing import start_app , unittest
20
20
from utilities import unitTestDataPath
21
21
@@ -66,13 +66,22 @@ def test_Attributes(self):
66
66
67
67
assert myAttributes == myExpectedAttributes , myMessage
68
68
69
- def test_SetAttribute (self ):
69
+ def test_SetAttributes (self ):
70
70
feat = QgsFeature ()
71
71
feat .initAttributes (1 )
72
72
feat .setAttributes ([0 ])
73
73
feat .setAttributes ([NULL ])
74
74
assert [NULL ] == feat .attributes ()
75
75
76
+ def test_setAttribute (self ):
77
+ feat = QgsFeature ()
78
+ feat .initAttributes (1 )
79
+ with self .assertRaises (KeyError ):
80
+ feat .setAttribute (- 1 , 5 )
81
+ with self .assertRaises (KeyError ):
82
+ feat .setAttribute (10 , 5 )
83
+ self .assertTrue (feat .setAttribute (0 , 5 ))
84
+
76
85
def test_DeleteAttribute (self ):
77
86
feat = QgsFeature ()
78
87
feat .initAttributes (3 )
@@ -85,6 +94,22 @@ def test_DeleteAttribute(self):
85
94
myMessage = '\n Expected: %s\n Got: %s' % (str (myExpectedAttrs ), str (myAttrs ))
86
95
assert myAttrs == myExpectedAttrs , myMessage
87
96
97
+ def test_DeleteAttributeByName (self ):
98
+ fields = QgsFields ()
99
+ field1 = QgsField ('my_field' )
100
+ fields .append (field1 )
101
+ field2 = QgsField ('my_field2' )
102
+ fields .append (field2 )
103
+
104
+ feat = QgsFeature (fields )
105
+ feat .initAttributes (2 )
106
+ feat [0 ] = "text1"
107
+ feat [1 ] = "text2"
108
+ with self .assertRaises (KeyError ):
109
+ feat .deleteAttribute ('not present' )
110
+ self .assertTrue (feat .deleteAttribute ('my_field' ))
111
+ self .assertEqual (feat .attributes (), ['text2' ])
112
+
88
113
def test_SetGeometry (self ):
89
114
feat = QgsFeature ()
90
115
feat .setGeometry (QgsGeometry .fromPoint (QgsPoint (123 , 456 )))
0 commit comments