| 1270 | |
| 1271 | |
| 1272 | def _table_like_slice_tests(factory): |
| 1273 | data = [ |
| 1274 | pa.array(range(5)), |
| 1275 | pa.array([-10, -5, 0, 5, 10]) |
| 1276 | ] |
| 1277 | names = ['c0', 'c1'] |
| 1278 | |
| 1279 | obj = factory(data, names=names) |
| 1280 | |
| 1281 | sliced = obj.slice(2) |
| 1282 | assert sliced.num_rows == 3 |
| 1283 | |
| 1284 | expected = factory([x.slice(2) for x in data], names=names) |
| 1285 | assert sliced.equals(expected) |
| 1286 | |
| 1287 | sliced2 = obj.slice(2, 2) |
| 1288 | expected2 = factory([x.slice(2, 2) for x in data], names=names) |
| 1289 | assert sliced2.equals(expected2) |
| 1290 | |
| 1291 | # 0 offset |
| 1292 | assert obj.slice(0).equals(obj) |
| 1293 | |
| 1294 | # Slice past end of array |
| 1295 | assert len(obj.slice(len(obj))) == 0 |
| 1296 | |
| 1297 | with pytest.raises(IndexError): |
| 1298 | obj.slice(-1) |
| 1299 | |
| 1300 | # Check __getitem__-based slicing |
| 1301 | assert obj.slice(0, 0).equals(obj[:0]) |
| 1302 | assert obj.slice(0, 2).equals(obj[:2]) |
| 1303 | assert obj.slice(2, 2).equals(obj[2:4]) |
| 1304 | assert obj.slice(2, len(obj) - 2).equals(obj[2:]) |
| 1305 | assert obj.slice(len(obj) - 2, 2).equals(obj[-2:]) |
| 1306 | assert obj.slice(len(obj) - 4, 2).equals(obj[-4:-2]) |
| 1307 | |
| 1308 | |
| 1309 | def test_recordbatch_slice_getitem(): |