123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 |
- <?php
- namespace Flow\JSONPath\Test;
- use Flow\JSONPath\JSONPath;
- class JSONPathSliceAccessTest extends \PHPUnit_Framework_TestCase
- {
- public function sliceDataProvider()
- {
- return [
- // path, data, expected
- [
- '$.data[1:3]',
- [
- 'data' => [
- '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);
- }
- }
|