Upstream thephpleague/csv state of the touched files before 3426bb277e

This commit is contained in:
upstream committed 2026-09-04 09:31:11 +02:00
1 parent e77df85d0c
commit 4354a49e5b
2 files changed
+9 -22

No files matched your search

+9 -4
View File
@@ -335,11 +335,16 @@ final class Buffer implements TabularData
private function nthRow(int $nth, string $method): array
{
-1 < $nth || throw InvalidArgument::dueToInvalidRecordOffset($nth, $method);
if (null === ($first = $this->firstOffset())) {
return [];
}
// $nth is a positional index (like ResultSet::nth), so it must be
// resolved against the record order rather than the row keys, which
// may contain gaps after records have been deleted.
return array_values($this->rows)[$nth] ?? [];
$offset = $first + $nth;
if (!array_key_exists($offset, $this->rows)) {
return [];
}
return $this->rows[$nth + $first];
}
public function fetchColumn(int|string $index = 0): Iterator
-18
View File
@@ -285,24 +285,6 @@ final class BufferTest extends TestCase
self::assertSame(['date' => '2025-02-08', 'temperature' => '3', 'place' => 'Berkeley'], $buffer->nth(0));
}
#[Test]
public function it_returns_records_by_positional_offset_after_a_middle_record_is_deleted(): void
{
$buffer = new Buffer(['id', 'name']);
$buffer->insert(['1', 'a'], ['2', 'b'], ['3', 'c'], ['4', 'd'], ['5', 'e']);
// Delete the second record (id = 2), which leaves a gap in the row keys.
self::assertSame(1, $buffer->delete(fn (array $row): bool => $row['id'] === '2'));
self::assertSame(4, $buffer->recordCount());
// nth() is positional and must stay consistent with getRecords().
self::assertSame(['id' => '1', 'name' => 'a'], $buffer->nth(0));
self::assertSame(['id' => '3', 'name' => 'c'], $buffer->nth(1));
self::assertSame(['id' => '4', 'name' => 'd'], $buffer->nth(2));
self::assertSame(['id' => '5', 'name' => 'e'], $buffer->nth(3));
self::assertSame([], $buffer->nth(4));
}
#[Test]
public function it_can_not_insert_invalid_records(): void
{