Call garbage collector after removing a column

Otherwise callers of getHighestColumn get stale values
This commit is contained in:
David Arenas 2019-10-11 00:56:22 +01:00
parent 9d6736d303
commit 703c670fbf
No known key found for this signature in database
GPG Key ID: 99FA7E54D1BB5B1F
2 changed files with 62 additions and 0 deletions

View File

@ -2154,6 +2154,7 @@ class Worksheet implements IComparable
$this->getCellCollection()->removeColumn($highestColumn);
$highestColumn = Coordinate::stringFromColumnIndex(Coordinate::columnIndexFromString($highestColumn) - 1);
}
$this->garbageCollect();
} else {
throw new Exception('Column references should not be numeric.');
}

View File

@ -181,4 +181,65 @@ class WorksheetTest extends TestCase
$worksheet->getCell('C1')->getValue()
);
}
public function removeColumnProvider(): array
{
return [
'Remove first column' => [
[
['A1', 'B1', 'C1'],
['A2', 'B2', 'C2'],
],
'A',
[
['B1', 'C1'],
['B2', 'C2'],
],
'B',
],
'Remove middle column' => [
[
['A1', 'B1', 'C1'],
['A2', 'B2', 'C2'],
],
'B',
[
['A1', 'C1'],
['A2', 'C2'],
],
'B',
],
'Remove last column' => [
[
['A1', 'B1', 'C1'],
['A2', 'B2', 'C2'],
],
'C',
[
['A1', 'B1'],
['A2', 'B2'],
],
'B',
],
];
}
/**
* @dataProvider removeColumnProvider
*/
public function testRemoveColumn(
array $initialData,
string $columnToBeRemoved,
array $expectedData,
string $expectedHighestColumn
) {
$spreadsheet = new Spreadsheet();
$worksheet = $spreadsheet->getActiveSheet();
$worksheet->fromArray($initialData);
$worksheet->removeColumn($columnToBeRemoved);
self::assertSame($expectedHighestColumn, $worksheet->getHighestColumn());
self::assertSame($expectedData, $worksheet->toArray());
}
}