| 1317 | |
| 1318 | |
| 1319 | def _table_like_slice_tests(factory): |
| 1320 | data = [ |
| 1321 | pa.array(range(5)), |
| 1322 | pa.array([-10, -5, 0, 5, 10]) |
| 1323 | ] |
| 1324 | names = ['c0', 'c1'] |
| 1325 | |
| 1326 | obj = factory(data, names=names) |
| 1327 | |
| 1328 | sliced = obj.slice(2) |
| 1329 | assert sliced.num_rows == 3 |
| 1330 | |
| 1331 | expected = factory([x.slice(2) for x in data], names=names) |
| 1332 | assert sliced.equals(expected) |
| 1333 | |
| 1334 | sliced2 = obj.slice(2, 2) |
| 1335 | expected2 = factory([x.slice(2, 2) for x in data], names=names) |
| 1336 | assert sliced2.equals(expected2) |
| 1337 | |
| 1338 | # 0 offset |
| 1339 | assert obj.slice(0).equals(obj) |
| 1340 | |
| 1341 | # Slice past end of array |
| 1342 | assert len(obj.slice(len(obj))) == 0 |
| 1343 | |
| 1344 | with pytest.raises(IndexError): |
| 1345 | obj.slice(-1) |
| 1346 | |
| 1347 | # Check __getitem__-based slicing |
| 1348 | assert obj.slice(0, 0).equals(obj[:0]) |
| 1349 | assert obj.slice(0, 2).equals(obj[:2]) |
| 1350 | assert obj.slice(2, 2).equals(obj[2:4]) |
| 1351 | assert obj.slice(2, len(obj) - 2).equals(obj[2:]) |
| 1352 | assert obj.slice(len(obj) - 2, 2).equals(obj[-2:]) |
| 1353 | assert obj.slice(len(obj) - 4, 2).equals(obj[-4:-2]) |
| 1354 | |
| 1355 | |
| 1356 | def test_recordbatch_slice_getitem(): |