MCPcopy Create free account
hub / github.com/buger/jsonparser / TestSetWildcard

Function TestSetWildcard

wildcard_test.go:153–197  ·  view source on GitHub ↗

Verifies: SYS-REQ-113 (wildcard path support) reqproof:proptest:skip targeted witness/regression test; not a property-test subject SYS-REQ-113:nominal:nominal SYS-REQ-113:malformed_input:nominal SYS-REQ-113:malformed_input:negative

(t *testing.T)

Source from the content-addressed store, hash-verified

151// SYS-REQ-113:malformed_input:nominal
152// SYS-REQ-113:malformed_input:negative
153func TestSetWildcard(t *testing.T) {
154 t.Run("sets field on every item", func(t *testing.T) {
155 data := []byte(`{"items":[{"id":1},{"id":2}]}`)
156 got, err := SetWildcard(data, []byte(`true`), "items", "[*]", "flag")
157 if err != nil {
158 t.Fatalf("SetWildcard() error = %v, want nil", err)
159 }
160
161 want := `{"items":[{"id":1,"flag":true},{"id":2,"flag":true}]}`
162 if string(got) != want {
163 t.Fatalf("SetWildcard() = %s, want %s", got, want)
164 }
165 })
166
167 t.Run("multiple wildcards", func(t *testing.T) {
168 data := []byte(`{"groups":[{"items":[{"flag":false},{"flag":false}]},{"items":[{"flag":false}]}]}`)
169 got, err := SetWildcard(data, []byte(`true`), "groups", "[*]", "items", "[*]", "flag")
170 if err != nil {
171 t.Fatalf("SetWildcard() error = %v, want nil", err)
172 }
173
174 want := `{"groups":[{"items":[{"flag":true},{"flag":true}]},{"items":[{"flag":true}]}]}`
175 if string(got) != want {
176 t.Fatalf("SetWildcard() = %s, want %s", got, want)
177 }
178 })
179
180 t.Run("empty array is unchanged", func(t *testing.T) {
181 data := []byte(`{"items":[]}`)
182 got, err := SetWildcard(data, []byte(`true`), "items", "[*]", "flag")
183 if err != nil {
184 t.Fatalf("SetWildcard() error = %v, want nil", err)
185 }
186 if string(got) != string(data) {
187 t.Fatalf("SetWildcard() = %s, want unchanged %s", got, data)
188 }
189 })
190
191 t.Run("wildcard requires array", func(t *testing.T) {
192 _, err := SetWildcard([]byte(`{"items":{"flag":false}}`), []byte(`true`), "items", "[*]", "flag")
193 if !errors.Is(err, MalformedArrayError) {
194 t.Fatalf("SetWildcard() error = %v, want %v", err, MalformedArrayError)
195 }
196 })
197}

Callers

nothing calls this directly

Calls 1

SetWildcardFunction · 0.85

Tested by

no test coverage detected