Skip to content

Commit

Permalink
Minor Improvement to Test Cleanup LookupRef
Browse files Browse the repository at this point in the history
Permit spreadsheet allocated as private member in test class to be garbage-collected after test completion.
  • Loading branch information
oleibman authored and MarkBaker committed May 14, 2021
1 parent 7aa83eb commit efe8f49
Show file tree
Hide file tree
Showing 6 changed files with 80 additions and 58 deletions.
Expand Up @@ -17,26 +17,28 @@ class AllSetupTeardown extends TestCase
protected $compatibilityMode;

/**
* @var Spreadsheet
* @var ?Spreadsheet
*/
protected $spreadsheet;
private $spreadsheet;

/**
* @var Worksheet
* @var ?Worksheet
*/
protected $sheet;
private $sheet;

protected function setUp(): void
{
$this->compatibilityMode = Functions::getCompatibilityMode();
$this->spreadsheet = new Spreadsheet();
$this->sheet = $this->spreadsheet->getActiveSheet();
}

protected function tearDown(): void
{
Functions::setCompatibilityMode($this->compatibilityMode);
$this->spreadsheet->disconnectWorksheets();
$this->sheet = null;
if ($this->spreadsheet !== null) {
$this->spreadsheet->disconnectWorksheets();
$this->spreadsheet = null;
}
}

protected static function setOpenOffice(): void
Expand Down Expand Up @@ -66,10 +68,30 @@ protected function setCell(string $cell, $value): void
{
if ($value !== null) {
if (is_string($value) && is_numeric($value)) {
$this->sheet->getCell($cell)->setValueExplicit($value, DataType::TYPE_STRING);
$this->getSheet()->getCell($cell)->setValueExplicit($value, DataType::TYPE_STRING);
} else {
$this->sheet->getCell($cell)->setValue($value);
$this->getSheet()->getCell($cell)->setValue($value);
}
}
}

protected function getSpreadsheet(): Spreadsheet
{
if ($this->spreadsheet !== null) {
return $this->spreadsheet;
}
$this->spreadsheet = new Spreadsheet();

return $this->spreadsheet;
}

protected function getSheet(): Worksheet
{
if ($this->sheet !== null) {
return $this->sheet;
}
$this->sheet = $this->getSpreadsheet()->getActiveSheet();

return $this->sheet;
}
}
Expand Up @@ -15,12 +15,12 @@ class ColumnOnSpreadsheetTest extends AllSetupTeardown
public function testColumnOnSpreadsheet($expectedResult, $cellReference = 'omitted'): void
{
$this->mightHaveException($expectedResult);
$sheet = $this->sheet;
$this->spreadsheet->addNamedRange(new NamedRange('namedrangex', $sheet, '$E$2:$E$6'));
$this->spreadsheet->addNamedRange(new NamedRange('namedrangey', $sheet, '$F$2:$H$2'));
$this->spreadsheet->addNamedRange(new NamedRange('namedrange3', $sheet, '$F$4:$H$4'));
$sheet = $this->getSheet();
$this->getSpreadsheet()->addNamedRange(new NamedRange('namedrangex', $sheet, '$E$2:$E$6'));
$this->getSpreadsheet()->addNamedRange(new NamedRange('namedrangey', $sheet, '$F$2:$H$2'));
$this->getSpreadsheet()->addNamedRange(new NamedRange('namedrange3', $sheet, '$F$4:$H$4'));

$sheet1 = $this->spreadsheet->createSheet();
$sheet1 = $this->getSpreadsheet()->createSheet();
$sheet1->setTitle('OtherSheet');

if ($cellReference === 'omitted') {
Expand All @@ -40,11 +40,11 @@ public function providerCOLUMNonSpreadsheet(): array

public function testCOLUMNLocalDefinedName(): void
{
$sheet = $this->sheet;
$sheet = $this->getSheet();

$sheet1 = $this->spreadsheet->createSheet();
$sheet1 = $this->getSpreadsheet()->createSheet();
$sheet1->setTitle('OtherSheet');
$this->spreadsheet->addNamedRange(new NamedRange('newnr', $sheet1, '$F$5:$H$5', true)); // defined locally, only usable on sheet1
$this->getSpreadsheet()->addNamedRange(new NamedRange('newnr', $sheet1, '$F$5:$H$5', true)); // defined locally, only usable on sheet1

$sheet1->getCell('B3')->setValue('=COLUMN(newnr)');
$result = $sheet1->getCell('B3')->getCalculatedValue();
Expand Down
Expand Up @@ -15,16 +15,16 @@ class ColumnsOnSpreadsheetTest extends AllSetupTeardown
public function testColumnsOnSpreadsheet($expectedResult, $cellReference = 'omitted'): void
{
$this->mightHaveException($expectedResult);
$sheet = $this->sheet;
$sheet = $this->getSheet();
$sheet->setTitle('ThisSheet');
$this->spreadsheet->addNamedRange(new NamedRange('namedrangex', $sheet, '$E$2:$E$6'));
$this->spreadsheet->addNamedRange(new NamedRange('namedrangey', $sheet, '$F$2:$H$2'));
$this->spreadsheet->addNamedRange(new NamedRange('namedrange3', $sheet, '$F$4:$H$4'));
$this->spreadsheet->addNamedRange(new NamedRange('namedrange5', $sheet, '$F$5:$I$5', true));
$this->getSpreadsheet()->addNamedRange(new NamedRange('namedrangex', $sheet, '$E$2:$E$6'));
$this->getSpreadsheet()->addNamedRange(new NamedRange('namedrangey', $sheet, '$F$2:$H$2'));
$this->getSpreadsheet()->addNamedRange(new NamedRange('namedrange3', $sheet, '$F$4:$H$4'));
$this->getSpreadsheet()->addNamedRange(new NamedRange('namedrange5', $sheet, '$F$5:$I$5', true));

$sheet1 = $this->spreadsheet->createSheet();
$sheet1 = $this->getSpreadsheet()->createSheet();
$sheet1->setTitle('OtherSheet');
$this->spreadsheet->addNamedRange(new NamedRange('localname', $sheet1, '$F$6:$H$6', true));
$this->getSpreadsheet()->addNamedRange(new NamedRange('localname', $sheet1, '$F$6:$H$6', true));

if ($cellReference === 'omitted') {
$sheet->getCell('B3')->setValue('=COLUMNS()');
Expand All @@ -43,11 +43,11 @@ public function providerCOLUMNSonSpreadsheet(): array

public function testCOLUMNSLocalDefinedName(): void
{
$sheet = $this->sheet;
$sheet = $this->getSheet();

$sheet1 = $this->spreadsheet->createSheet();
$sheet1 = $this->getSpreadsheet()->createSheet();
$sheet1->setTitle('OtherSheet');
$this->spreadsheet->addNamedRange(new NamedRange('newnr', $sheet1, '$F$5:$H$5', true)); // defined locally, only usable on sheet1
$this->getSpreadsheet()->addNamedRange(new NamedRange('newnr', $sheet1, '$F$5:$H$5', true)); // defined locally, only usable on sheet1

$sheet1->getCell('B3')->setValue('=COLUMNS(newnr)');
$result = $sheet1->getCell('B3')->getCalculatedValue();
Expand Down
Expand Up @@ -17,15 +17,15 @@ class IndirectTest extends AllSetupTeardown
public function testINDIRECT($expectedResult, $cellReference = 'omitted', $a1 = 'omitted'): void
{
$this->mightHaveException($expectedResult);
$sheet = $this->sheet;
$sheet = $this->getSheet();
$sheet->getCell('A1')->setValue(100);
$sheet->getCell('A2')->setValue(200);
$sheet->getCell('A3')->setValue(300);
$sheet->getCell('A4')->setValue(400);
$sheet->getCell('A5')->setValue(500);
$sheet->setTitle('ThisSheet');

$sheet1 = $this->spreadsheet->createSheet();
$sheet1 = $this->getSpreadsheet()->createSheet();
$sheet1->getCell('A1')->setValue(10);
$sheet1->getCell('A2')->setValue(20);
$sheet1->getCell('A3')->setValue(30);
Expand All @@ -37,8 +37,8 @@ public function testINDIRECT($expectedResult, $cellReference = 'omitted', $a1 =
$sheet1->getCell('B4')->setValue(4);
$sheet1->getCell('B5')->setValue(5);
$sheet1->setTitle('OtherSheet');
$this->spreadsheet->addNamedRange(new NamedRange('newnr', $sheet1, '$A$2:$A$4'));
$this->spreadsheet->addNamedRange(new NamedRange('localname', $sheet1, '$B$2:$B$4', true));
$this->getSpreadsheet()->addNamedRange(new NamedRange('newnr', $sheet1, '$A$2:$A$4'));
$this->getSpreadsheet()->addNamedRange(new NamedRange('localname', $sheet1, '$B$2:$B$4', true));

$this->setCell('B1', $cellReference);
$this->setCell('B2', $a1);
Expand All @@ -61,14 +61,14 @@ public function providerINDIRECT(): array

public function testINDIRECTEurUsd(): void
{
$sheet = $this->sheet;
$sheet = $this->getSheet();
$sheet->getCell('A1')->setValue('EUR');
$sheet->getCell('A2')->setValue('USD');
$sheet->getCell('B1')->setValue(360);
$sheet->getCell('B2')->setValue(300);

$this->spreadsheet->addNamedRange(new NamedRange('EUR', $sheet, '$B$1'));
$this->spreadsheet->addNamedRange(new NamedRange('USD', $sheet, '$B$2'));
$this->getSpreadsheet()->addNamedRange(new NamedRange('EUR', $sheet, '$B$1'));
$this->getSpreadsheet()->addNamedRange(new NamedRange('USD', $sheet, '$B$2'));

$this->setCell('E1', '=INDIRECT("USD")');

Expand All @@ -78,14 +78,14 @@ public function testINDIRECTEurUsd(): void

public function testINDIRECTLeadingEquals(): void
{
$sheet = $this->sheet;
$sheet = $this->getSheet();
$sheet->getCell('A1')->setValue('EUR');
$sheet->getCell('A2')->setValue('USD');
$sheet->getCell('B1')->setValue(360);
$sheet->getCell('B2')->setValue(300);

$this->spreadsheet->addNamedRange(new NamedRange('EUR', $sheet, '=$B$1'));
$this->spreadsheet->addNamedRange(new NamedRange('USD', $sheet, '=$B$2'));
$this->getSpreadsheet()->addNamedRange(new NamedRange('EUR', $sheet, '=$B$1'));
$this->getSpreadsheet()->addNamedRange(new NamedRange('USD', $sheet, '=$B$2'));

$this->setCell('E1', '=INDIRECT("USD")');

Expand Down Expand Up @@ -125,7 +125,7 @@ public function testIndirectFile2(): void

public function testDeprecatedCall(): void
{
$sheet = $this->sheet;
$sheet = $this->getSheet();
$sheet->getCell('A1')->setValue('A2');
$sheet->getCell('A2')->setValue('This is it');
$result = \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::INDIRECT('A2', $sheet->getCell('A1'));
Expand Down
Expand Up @@ -15,16 +15,16 @@ class RowOnSpreadsheetTest extends AllSetupTeardown
public function testRowOnSpreadsheet($expectedResult, $cellReference = 'omitted'): void
{
$this->mightHaveException($expectedResult);
$sheet = $this->sheet;
$sheet = $this->getSheet();
$sheet->setTitle('ThisSheet');
$this->spreadsheet->addNamedRange(new NamedRange('namedrangex', $sheet, '$E$2:$E$6'));
$this->spreadsheet->addNamedRange(new NamedRange('namedrangey', $sheet, '$F$2:$H$2'));
$this->spreadsheet->addNamedRange(new NamedRange('namedrange3', $sheet, '$F$4:$H$4'));
$this->spreadsheet->addNamedRange(new NamedRange('namedrange5', $sheet, '$F$5:$H$5', true));
$this->getSpreadsheet()->addNamedRange(new NamedRange('namedrangex', $sheet, '$E$2:$E$6'));
$this->getSpreadsheet()->addNamedRange(new NamedRange('namedrangey', $sheet, '$F$2:$H$2'));
$this->getSpreadsheet()->addNamedRange(new NamedRange('namedrange3', $sheet, '$F$4:$H$4'));
$this->getSpreadsheet()->addNamedRange(new NamedRange('namedrange5', $sheet, '$F$5:$H$5', true));

$sheet1 = $this->spreadsheet->createSheet();
$sheet1 = $this->getSpreadsheet()->createSheet();
$sheet1->setTitle('OtherSheet');
$this->spreadsheet->addNamedRange(new NamedRange('localname', $sheet1, '$F$6:$H$6', true));
$this->getSpreadsheet()->addNamedRange(new NamedRange('localname', $sheet1, '$F$6:$H$6', true));

if ($cellReference === 'omitted') {
$sheet->getCell('B3')->setValue('=ROW()');
Expand All @@ -43,11 +43,11 @@ public function providerROWOnSpreadsheet(): array

public function testINDIRECTLocalDefinedName(): void
{
$sheet = $this->sheet;
$sheet = $this->getSheet();

$sheet1 = $this->spreadsheet->createSheet();
$sheet1 = $this->getSpreadsheet()->createSheet();
$sheet1->setTitle('OtherSheet');
$this->spreadsheet->addNamedRange(new NamedRange('newnr', $sheet1, '$F$5:$H$5', true)); // defined locally, only usable on sheet1
$this->getSpreadsheet()->addNamedRange(new NamedRange('newnr', $sheet1, '$F$5:$H$5', true)); // defined locally, only usable on sheet1

$sheet1->getCell('B3')->setValue('=ROW(newnr)');
$result = $sheet1->getCell('B3')->getCalculatedValue();
Expand Down
Expand Up @@ -15,16 +15,16 @@ class RowsOnSpreadsheetTest extends AllSetupTeardown
public function testRowsOnSpreadsheet($expectedResult, $cellReference = 'omitted'): void
{
$this->mightHaveException($expectedResult);
$sheet = $this->sheet;
$sheet = $this->getSheet();
$sheet->setTitle('ThisSheet');
$this->spreadsheet->addNamedRange(new NamedRange('namedrangex', $sheet, '$E$2:$E$6'));
$this->spreadsheet->addNamedRange(new NamedRange('namedrangey', $sheet, '$F$2:$H$2'));
$this->spreadsheet->addNamedRange(new NamedRange('namedrange3', $sheet, '$F$4:$H$4'));
$this->spreadsheet->addNamedRange(new NamedRange('namedrange5', $sheet, '$F$5:$H$5', true));
$this->getSpreadsheet()->addNamedRange(new NamedRange('namedrangex', $sheet, '$E$2:$E$6'));
$this->getSpreadsheet()->addNamedRange(new NamedRange('namedrangey', $sheet, '$F$2:$H$2'));
$this->getSpreadsheet()->addNamedRange(new NamedRange('namedrange3', $sheet, '$F$4:$H$4'));
$this->getSpreadsheet()->addNamedRange(new NamedRange('namedrange5', $sheet, '$F$5:$H$5', true));

$sheet1 = $this->spreadsheet->createSheet();
$sheet1 = $this->getSpreadsheet()->createSheet();
$sheet1->setTitle('OtherSheet');
$this->spreadsheet->addNamedRange(new NamedRange('localname', $sheet1, '$F$6:$H$6', true));
$this->getSpreadsheet()->addNamedRange(new NamedRange('localname', $sheet1, '$F$6:$H$6', true));

if ($cellReference === 'omitted') {
$sheet->getCell('B3')->setValue('=ROWS()');
Expand All @@ -43,11 +43,11 @@ public function providerROWSOnSpreadsheet(): array

public function testRowsLocalDefinedName(): void
{
$sheet = $this->sheet;
$sheet = $this->getSheet();

$sheet1 = $this->spreadsheet->createSheet();
$sheet1 = $this->getSpreadsheet()->createSheet();
$sheet1->setTitle('OtherSheet');
$this->spreadsheet->addNamedRange(new NamedRange('newnr', $sheet1, '$F$5:$H$10', true)); // defined locally, only usable on sheet1
$this->getSpreadsheet()->addNamedRange(new NamedRange('newnr', $sheet1, '$F$5:$H$10', true)); // defined locally, only usable on sheet1

$sheet1->getCell('B3')->setValue('=ROWS(newnr)');
$result = $sheet1->getCell('B3')->getCalculatedValue();
Expand Down

0 comments on commit efe8f49

Please sign in to comment.