@@ -147,6 +147,94 @@ func TestAddAttr(t *testing.T) {
147
147
}
148
148
}
149
149
150
+ func TestSetAttr (t * testing.T ) {
151
+ for _ , test := range []struct {
152
+ name string
153
+ n * Node
154
+ key string
155
+ val string
156
+ expected string
157
+ }{
158
+ {
159
+ name : "node has no existing attr" ,
160
+ n : & Node {Type : AttributeNode },
161
+ key : "ns:k1" ,
162
+ val : "v1" ,
163
+ expected : `< ns:k1="v1"></>` ,
164
+ },
165
+ {
166
+ name : "node has an existing attr, overwriting" ,
167
+ n : & Node {Type : AttributeNode , Attr : []Attr {{Name : xml.Name {Space : "ns" , Local : "k1" }, Value : "v1" }}},
168
+ key : "ns:k1" ,
169
+ val : "v2" ,
170
+ expected : `< ns:k1="v2"></>` ,
171
+ },
172
+ {
173
+ name : "node has no existing attr, no ns" ,
174
+ n : & Node {Type : AttributeNode },
175
+ key : "k1" ,
176
+ val : "v1" ,
177
+ expected : `< k1="v1"></>` ,
178
+ },
179
+ {
180
+ name : "node has an existing attr, no ns, overwriting" ,
181
+ n : & Node {Type : AttributeNode , Attr : []Attr {{Name : xml.Name {Local : "k1" }, Value : "v1" }}},
182
+ key : "k1" ,
183
+ val : "v2" ,
184
+ expected : `< k1="v2"></>` ,
185
+ },
186
+
187
+ } {
188
+
189
+ t .Run (test .name , func (t * testing.T ) {
190
+ test .n .SetAttr (test .key , test .val )
191
+ testValue (t , test .n .OutputXML (true ), test .expected )
192
+ })
193
+ }
194
+ }
195
+
196
+ func TestRemoveAttr (t * testing.T ) {
197
+ for _ , test := range []struct {
198
+ name string
199
+ n * Node
200
+ key string
201
+ expected string
202
+ }{
203
+ {
204
+ name : "node has no existing attr" ,
205
+ n : & Node {Type : AttributeNode },
206
+ key : "ns:k1" ,
207
+ expected : `<></>` ,
208
+ },
209
+ {
210
+ name : "node has an existing attr, overwriting" ,
211
+ n : & Node {Type : AttributeNode , Attr : []Attr {{Name : xml.Name {Space : "ns" , Local : "k1" }, Value : "v1" }}},
212
+ key : "ns:k1" ,
213
+ expected : `<></>` ,
214
+ },
215
+ {
216
+ name : "node has no existing attr, no ns" ,
217
+ n : & Node {Type : AttributeNode },
218
+ key : "k1" ,
219
+ expected : `<></>` ,
220
+ },
221
+ {
222
+ name : "node has an existing attr, no ns, overwriting" ,
223
+ n : & Node {Type : AttributeNode , Attr : []Attr {{Name : xml.Name {Local : "k1" }, Value : "v1" }}},
224
+ key : "k1" ,
225
+ expected : `<></>` ,
226
+ },
227
+
228
+ } {
229
+
230
+ t .Run (test .name , func (t * testing.T ) {
231
+ test .n .RemoveAttr (test .key )
232
+ testValue (t , test .n .OutputXML (true ), test .expected )
233
+ })
234
+ }
235
+ }
236
+
237
+
150
238
func TestRemoveFromTree (t * testing.T ) {
151
239
xml := `<?procinst?>
152
240
<!--comment-->
0 commit comments