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

Function TestEachKeyWildcard

wildcard_test.go:15–110  ·  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:boundary:nominal SYS-REQ-113:malformed_input:nominal SYS-REQ-113:malformed_input:negative

(t *testing.T)

Source from the content-addressed store, hash-verified

13// SYS-REQ-113:malformed_input:nominal
14// SYS-REQ-113:malformed_input:negative
15func TestEachKeyWildcard(t *testing.T) {
16 t.Run("single wildcard at end", func(t *testing.T) {
17 data := []byte(`{"values":[1,"two",true,null]}`)
18 var indices []int
19 var values []string
20 var types []ValueType
21
22 err := EachKeyWildcard(data, func(idx int, value []byte, vt ValueType, err error) {
23 if err != nil {
24 t.Fatalf("callback error = %v, want nil", err)
25 }
26 indices = append(indices, idx)
27 values = append(values, string(value))
28 types = append(types, vt)
29 }, "values", "[*]")
30
31 if err != nil {
32 t.Fatalf("EachKeyWildcard() error = %v, want nil", err)
33 }
34 if want := []int{0, 1, 2, 3}; !reflect.DeepEqual(indices, want) {
35 t.Fatalf("indices = %v, want %v", indices, want)
36 }
37 if want := []string{"1", "two", "true", "null"}; !reflect.DeepEqual(values, want) {
38 t.Fatalf("values = %q, want %q", values, want)
39 }
40 if want := []ValueType{Number, String, Boolean, Null}; !reflect.DeepEqual(types, want) {
41 t.Fatalf("types = %v, want %v", types, want)
42 }
43 })
44
45 t.Run("wildcard in middle", func(t *testing.T) {
46 data := []byte(`{"users":[{"name":"Alice"},{"name":"Bob"}]}`)
47 var names []string
48
49 err := EachKeyWildcard(data, func(_ int, value []byte, _ ValueType, err error) {
50 if err != nil {
51 t.Fatalf("callback error = %v, want nil", err)
52 }
53 names = append(names, string(value))
54 }, "users", "[*]", "name")
55
56 if err != nil {
57 t.Fatalf("EachKeyWildcard() error = %v, want nil", err)
58 }
59 if want := []string{"Alice", "Bob"}; !reflect.DeepEqual(names, want) {
60 t.Fatalf("names = %q, want %q", names, want)
61 }
62 })
63
64 t.Run("multiple wildcards in nested arrays", func(t *testing.T) {
65 data := []byte(`{"matrix":[[1,2],[3,4]]}`)
66 var values []string
67
68 err := EachKeyWildcard(data, func(_ int, value []byte, _ ValueType, err error) {
69 if err != nil {
70 t.Fatalf("callback error = %v, want nil", err)
71 }
72 values = append(values, string(value))

Callers

nothing calls this directly

Calls 1

EachKeyWildcardFunction · 0.85

Tested by

no test coverage detected