@@ -26,7 +26,7 @@ func TestRemove(t *testing.T) {
2626 object : `{"a": "value"}` ,
2727 remove : fieldpath .NewSet (fieldpath .MakePathOrDie ("a" )),
2828 deep : true ,
29- expect : `null ` ,
29+ expect : `` ,
3030 },
3131 {
3232 object : `{"a": "value", "b": "value"}` ,
@@ -98,6 +98,81 @@ func TestRemove(t *testing.T) {
9898 deep : true ,
9999 expect : `{"a": "value", "b": {"c":"value", "d": null}}` ,
100100 },
101+ {
102+ object : `{}` ,
103+ remove : fieldpath .NewSet (fieldpath .MakePathOrDie ("a" )),
104+ deep : false ,
105+ expect : `` ,
106+ },
107+ {
108+ object : `{"a": "value"}` ,
109+ remove : fieldpath .NewSet (fieldpath .MakePathOrDie ("a" )),
110+ deep : false ,
111+ expect : `` ,
112+ },
113+ {
114+ object : `{"a": "value", "b": "value"}` ,
115+ remove : fieldpath .NewSet (fieldpath .MakePathOrDie ("a" )),
116+ deep : false ,
117+ expect : `{"b": "value"}` ,
118+ },
119+ {
120+ object : `{"a": "value", "b": {}}` ,
121+ remove : fieldpath .NewSet (fieldpath .MakePathOrDie ("a" )),
122+ deep : false ,
123+ expect : `{"b": {}}` ,
124+ },
125+ {
126+ object : `{"a": "value", "b": {"c":"value"}}` ,
127+ remove : fieldpath .NewSet (fieldpath .MakePathOrDie ("b" )),
128+ deep : false ,
129+ expect : `{"a": "value"}` ,
130+ },
131+ {
132+ object : `{"a": "value", "b": {"c":"value"}}` ,
133+ remove : fieldpath .NewSet (fieldpath .MakePathOrDie ("b" , "c" )),
134+ deep : false ,
135+ // TODO: is a null result expected (insted of a {})
136+ expect : `{"a": "value", "b": null}` ,
137+ },
138+ {
139+ object : `{"a": "value", "b": []}` ,
140+ remove : fieldpath .NewSet (fieldpath .MakePathOrDie ("b" )),
141+ deep : false ,
142+ expect : `{"a": "value"}` ,
143+ },
144+ {
145+ object : `{"a": "value", "b": ["c"]}` ,
146+ remove : fieldpath .NewSet (fieldpath .MakePathOrDie ("b" , "c" )),
147+ deep : false ,
148+ expect : `{"a": "value", "b": null}` ,
149+ },
150+ {
151+ object : `{"a": "value", "b": ["c", "d"]}` ,
152+ remove : fieldpath .NewSet (fieldpath .MakePathOrDie ("b" , "c" )),
153+ deep : false ,
154+ // TODO: is this expected?
155+ expect : `{"a": "value", "b": null}` ,
156+ },
157+ {
158+ object : `{"a": "value", "b": [{"c": "value"}, {"d": "value"}]}` ,
159+ remove : fieldpath .NewSet (fieldpath .MakePathOrDie ("b" , "c" )),
160+ deep : false ,
161+ // TODO: is this expected?
162+ expect : `{"a": "value", "b": null}` ,
163+ },
164+ {
165+ object : `{"a": "value", "b": {"c":"value", "d":{"e":"value"}}}` ,
166+ remove : fieldpath .NewSet (fieldpath .MakePathOrDie ("b" , "d" )),
167+ deep : false ,
168+ expect : `{"a": "value", "b": {"c":"value"}}` ,
169+ },
170+ {
171+ object : `{"a": "value", "b": {"c":"value", "d": {"e":"value"}}}` ,
172+ remove : fieldpath .NewSet (fieldpath .MakePathOrDie ("b" , "d" , "e" )),
173+ deep : false ,
174+ expect : `{"a": "value", "b": {"c":"value", "d": null}}` ,
175+ },
101176 }
102177
103178 for i , c := range cases {
0 commit comments