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

Function TestCompiledPathMethods

path_compiler_test.go:205–270  ·  view source on GitHub ↗

Verifies: SYS-REQ-114 (JSONPath compiled paths) reqproof:proptest:skip targeted witness/regression test; not a property-test subject

(t *testing.T)

Source from the content-addressed store, hash-verified

203// Verifies: SYS-REQ-114 (JSONPath compiled paths)
204// reqproof:proptest:skip targeted witness/regression test; not a property-test subject
205func TestCompiledPathMethods(t *testing.T) {
206 t.Run("GetInt", func(t *testing.T) {
207 path, err := CompilePath("person.age")
208 if err != nil {
209 t.Fatal(err)
210 }
211 got, err := path.GetInt([]byte(`{"person":{"age":36}}`))
212 if err != nil || got != 36 {
213 t.Fatalf("GetInt = (%d, %v), want (36, nil)", got, err)
214 }
215 })
216
217 t.Run("Delete", func(t *testing.T) {
218 path, err := CompilePath("person.age")
219 if err != nil {
220 t.Fatal(err)
221 }
222 got := path.Delete([]byte(`{"person":{"name":"Ada","age":36}}`))
223 want := []byte(`{"person":{"name":"Ada"}}`)
224 if !bytes.Equal(got, want) {
225 t.Fatalf("Delete result = %s, want %s", got, want)
226 }
227 })
228
229 t.Run("ArrayEach", func(t *testing.T) {
230 path, err := CompilePath("values")
231 if err != nil {
232 t.Fatal(err)
233 }
234 var got []string
235 count, err := path.ArrayEach([]byte(`{"values":[1,2,3]}`), func(value []byte, _ ValueType, _ int, err error) {
236 if err != nil {
237 t.Errorf("ArrayEach callback error: %v", err)
238 return
239 }
240 got = append(got, string(value))
241 })
242 if err != nil {
243 t.Fatalf("ArrayEach returned error: %v", err)
244 }
245 if count <= 0 || !reflect.DeepEqual(got, []string{"1", "2", "3"}) {
246 t.Fatalf("ArrayEach = (%d, %#v), want three values", count, got)
247 }
248 })
249
250 t.Run("EachKey", func(t *testing.T) {
251 path, err := CompilePath("person.name")
252 if err != nil {
253 t.Fatal(err)
254 }
255 var got string
256 err = path.EachKey([]byte(`{"person":{"name":"Ada"}}`), func(_ int, value []byte, _ ValueType, err error) {
257 if err != nil {
258 t.Errorf("EachKey callback error: %v", err)
259 return
260 }
261 got = string(value)
262 })

Callers

nothing calls this directly

Calls 5

CompilePathFunction · 0.85
GetIntMethod · 0.80
EachKeyMethod · 0.80
DeleteMethod · 0.45
ArrayEachMethod · 0.45

Tested by

no test coverage detected