['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()); } }