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

Function TestObjectEachSupplementalErrors

mcdc_supplement_test.go:272–310  ·  view source on GitHub ↗

Verifies: SYS-REQ-007 [malformed] MCDC SYS-REQ-007: N/A

(t *testing.T)

Source from the content-addressed store, hash-verified

270// Verifies: SYS-REQ-007 [malformed]
271// MCDC SYS-REQ-007: N/A
272func TestObjectEachSupplementalErrors(t *testing.T) {
273 noop := func([]byte, []byte, ValueType, int) error { return nil }
274
275 cases := []struct {
276 name string
277 data string
278 wantErr error
279 }{
280 {name: "whitespace only", data: ` `, wantErr: MalformedObjectError},
281 {name: "unterminated object", data: `{`, wantErr: MalformedJsonError},
282 {name: "invalid escaped key", data: `{"\uD800\u":1}`, wantErr: MalformedStringEscapeError},
283 {name: "missing value after key", data: `{"a"`, wantErr: MalformedJsonError},
284 {name: "malformed value token", data: `{"a":u}`, wantErr: UnknownValueTypeError},
285 {name: "missing closing brace after value", data: `{"a":1 `, wantErr: MalformedArrayError},
286 }
287
288 for _, tc := range cases {
289 t.Run(tc.name, func(t *testing.T) {
290 err := ObjectEach([]byte(tc.data), noop)
291 if !errors.Is(err, tc.wantErr) {
292 t.Fatalf("ObjectEach(%q) error = %v, want %v", tc.data, err, tc.wantErr)
293 }
294 })
295 }
296
297 t.Run("missing key path", func(t *testing.T) {
298 err := ObjectEach([]byte(`{"a":1}`), noop, "missing")
299 if !errors.Is(err, KeyPathNotFoundError) {
300 t.Fatalf("ObjectEach missing path error = %v, want %v", err, KeyPathNotFoundError)
301 }
302 })
303
304 t.Run("trailing comma without closing brace", func(t *testing.T) {
305 err := ObjectEach([]byte(`{"a":1, `), noop)
306 if !errors.Is(err, MalformedArrayError) {
307 t.Fatalf("ObjectEach trailing comma error = %v, want %v", err, MalformedArrayError)
308 }
309 })
310}
311
312// Verifies: SYS-REQ-035 [boundary]
313// MCDC SYS-REQ-035: delete_path_is_provided=T, delete_input_is_unusable_for_requested_path=T, delete_returns_original_input_on_unusable_input=T, delete_completes_without_panic=T => TRUE

Callers

nothing calls this directly

Calls 1

ObjectEachFunction · 0.85

Tested by

no test coverage detected