['foo0', 'foo1', 'foo2', 'foo3', 'foo4', 'foo5']], ['foo1', 'foo2'] ], [ '$.data[4:]', ['data' => ['foo0', 'foo1', 'foo2', 'foo3', 'foo4', 'foo5']], ['foo4', 'foo5'] ], [ '$.data[:2]', ['data' => ['foo0', 'foo1', 'foo2', 'foo3', 'foo4', 'foo5']], ['foo0', 'foo1'] ], [ '$.data[:]', ['data' => ['foo0', 'foo1', 'foo2', 'foo3', 'foo4', 'foo5']], ['foo0', 'foo1', 'foo2', 'foo3', 'foo4', 'foo5'] ], [ '$.data[-1]', ['data' => ['foo0', 'foo1', 'foo2', 'foo3', 'foo4', 'foo5']], ['foo5'] ], [ '$.data[-2:]', ['data' => ['foo0', 'foo1', 'foo2', 'foo3', 'foo4', 'foo5']], ['foo4', 'foo5'] ], [ '$.data[:-2]', ['data' => ['foo0', 'foo1', 'foo2', 'foo3', 'foo4', 'foo5']], ['foo0', 'foo1', 'foo2', 'foo3'] ], [ '$.data[::2]', ['data' => ['foo0', 'foo1', 'foo2', 'foo3', 'foo4', 'foo5']], ['foo0', 'foo2', 'foo4'] ], [ '$.data[2::2]', ['data' => ['foo0', 'foo1', 'foo2', 'foo3', 'foo4', 'foo5']], ['foo2', 'foo4'] ], [ '$.data[:-2:2]', ['data' => ['foo0', 'foo1', 'foo2', 'foo3', 'foo4', 'foo5']], ['foo0', 'foo2'] ], [ '$.data[1:5:2]', ['data' => ['foo0', 'foo1', 'foo2', 'foo3', 'foo4', 'foo5']], ['foo1', 'foo3'] ] ]; } /** * @dataProvider sliceDataProvider * * @throws JSONPathException */ public function testSlice(string $path, array $data, array $expected): void { $result = (new JSONPath($data)) ->find($path); self::assertEquals($expected, $result->getData()); } }