1414package jsonpointer_test
1515
1616import (
17+ "encoding/json"
1718 "fmt"
1819 "testing"
1920
@@ -29,14 +30,67 @@ func TestDelete(t *testing.T) {
2930 root Root
3031 run func (r Root , err error )
3132 }{
32- {"/nested/str" , Root {Nested : Nested {Str : "str val" }}, func (r Root , err error ) {
33+ {"/nested/str" , Root {Nested : Nested {Str : "str val" , Int : 5 }}, func (r Root , err error ) {
3334 assert .NoError (err )
3435 assert .Equal ("" , r .Nested .Str )
36+ assert .Equal (5 , r .Nested .Int )
37+ }},
38+ {"/nested" , Root {Nested : Nested {Str : "str val" , Int : 5 }}, func (r Root , err error ) {
39+ assert .NoError (err )
40+ assert .Equal ("" , r .Nested .Str )
41+ assert .Equal (0 , r .Nested .Int )
42+ }},
43+ {"/nested/deleter/key" , Root {Nested : Nested {Deleter : DeleterImpl {Values : map [string ]string {"key" : "value" }}}}, func (r Root , err error ) {
44+ assert .NotContains (r .Nested .Deleter .Values , "key" )
45+ assert .NoError (err )
3546 }},
3647 }
48+
3749 for i , test := range tests {
3850 fmt .Printf ("=== RUN TestDelete #%d, pointer %s\n " , i , test .ptr )
3951 err := jsonpointer .Delete (& test .root , test .ptr )
4052 test .run (test .root , err )
53+
54+ }
55+ }
56+
57+ func TestDeleteJSON (t * testing.T ) {
58+ assert := require .New (t )
59+
60+ tests := []struct {
61+ ptr jsonpointer.JSONPointer
62+ root Root
63+ run func (r Root , err error )
64+ }{
65+ {"/nested/str" , Root {Nested : Nested {Str : "string" , Int : 5 }}, func (r Root , err error ) {
66+ assert .NoError (err )
67+ assert .Equal ("" , r .Nested .Str )
68+ assert .Equal (5 , r .Nested .Int )
69+ }},
70+ {"/nested" , Root {Nested : Nested {Str : "str val" , Int : 5 }}, func (r Root , err error ) {
71+ assert .NoError (err )
72+ assert .Equal ("" , r .Nested .Str )
73+ assert .Equal (0 , r .Nested .Int )
74+ }},
75+
76+ {"/nested/strslice/1" , Root {Nested : Nested {StrSlice : []string {"0" , "1" , "2" }}}, func (r Root , err error ) {
77+ assert .NoError (err )
78+ assert .Len (r .Nested .StrSlice , 2 )
79+ assert .Equal ("2" , r .Nested .StrSlice [1 ])
80+ }},
81+ }
82+
83+ for i , test := range tests {
84+ fmt .Printf ("=== RUN TestDelete #%d, pointer %s\n " , i , test .ptr )
85+ b , err := json .Marshal (test .root )
86+ fmt .Println (string (b ))
87+
88+ assert .NoError (err )
89+ err = jsonpointer .Delete (& b , test .ptr )
90+ var r Root
91+ uerr := json .Unmarshal (b , & r )
92+ assert .NoError (uerr )
93+ fmt .Println (string (b ))
94+ test .run (r , err )
4195 }
4296}
0 commit comments