[ 'foo0', 'foo1', 'foo2', 'foo3', 'foo4', 'foo5', ] ], [ 'foo1', 'foo2', 'foo3', ] ], [ '$.data[4:]', [ 'data' => [ 'foo0', 'foo1', 'foo2', 'foo3', 'foo4', 'foo5', ] ], [ 'foo4', 'foo5', ] ], [ '$.data[:2]', [ 'data' => [ 'foo0', 'foo1', 'foo2', 'foo3', 'foo4', 'foo5', ] ], [ 'foo0', 'foo1', 'foo2', ] ], [ '$.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', 'foo5', ] ] ]; } /** @dataProvider sliceDataProvider */ public function testSlice($path, $data, $expected) { $jsonPath = new JSONPath($data); $result = $jsonPath->find($path)->data(); $this->assertEquals($expected, $result); } }