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

Function TestReaderParserGet

reader_parser_test.go:15–72  ·  view source on GitHub ↗

Verifies: SYS-REQ-116 (incremental path lookup) SYS-REQ-116:nominal:nominal reqproof:proptest:skip targeted streaming witness; not a property-test subject

(t *testing.T)

Source from the content-addressed store, hash-verified

13// SYS-REQ-116:nominal:nominal
14// reqproof:proptest:skip targeted streaming witness; not a property-test subject
15func TestReaderParserGet(t *testing.T) {
16 tests := []struct {
17 name string
18 data string
19 keys []string
20 want string
21 wantType ValueType
22 }{
23 {
24 name: "nested number",
25 data: `{"person":{"name":"Ada","age":37}}`,
26 keys: []string{"person", "age"},
27 want: "37",
28 wantType: Number,
29 },
30 {
31 name: "object",
32 data: `{"person":{"name":"Ada","age":37}}`,
33 keys: []string{"person"},
34 want: `{"name":"Ada","age":37}`,
35 wantType: Object,
36 },
37 {
38 name: "array index",
39 data: `{"people":[{"name":"Ada"},{"name":"Grace"}]}`,
40 keys: []string{"people", "[1]", "name"},
41 want: "Grace",
42 wantType: String,
43 },
44 {
45 name: "root value",
46 data: ` [1,{"ok":true}] trailing bytes are not needed`,
47 want: `[1,{"ok":true}]`,
48 wantType: Array,
49 },
50 }
51
52 for _, tt := range tests {
53 t.Run(tt.name, func(t *testing.T) {
54 rp := NewReaderParser(bytes.NewReader([]byte(tt.data)))
55 value, vt, err := rp.Get(tt.keys...)
56 if err != nil {
57 t.Fatalf("Get returned error: %v", err)
58 }
59 if vt != tt.wantType {
60 t.Fatalf("Get type = %v, want %v", vt, tt.wantType)
61 }
62 if got := string(value); got != tt.want {
63 t.Fatalf("Get value = %q, want %q", got, tt.want)
64 }
65 })
66 }
67
68 rp := NewReaderParser(strings.NewReader(`{"present":1}`))
69 if _, vt, err := rp.Get("missing"); !errors.Is(err, KeyPathNotFoundError) || vt != NotExist {
70 t.Fatalf("missing Get = type %v, error %v; want NotExist, KeyPathNotFoundError", vt, err)
71 }
72}

Callers

nothing calls this directly

Calls 2

GetMethod · 0.95
NewReaderParserFunction · 0.85

Tested by

no test coverage detected