Verifies: SYS-REQ-114 (JSONPath compiled paths) reqproof:proptest:skip targeted witness/regression test; not a property-test subject
(t *testing.T)
| 203 | // Verifies: SYS-REQ-114 (JSONPath compiled paths) |
| 204 | // reqproof:proptest:skip targeted witness/regression test; not a property-test subject |
| 205 | func 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 | }) |
nothing calls this directly
no test coverage detected