compatibilityMode = Functions::getCompatibilityMode(); $this->arrayReturnType = Calculation::getArrayReturnType(); } protected function tearDown(): void { Functions::setCompatibilityMode($this->compatibilityMode); Calculation::setArrayReturnType($this->arrayReturnType); $this->sheet = null; if ($this->spreadsheet !== null) { $this->spreadsheet->disconnectWorksheets(); $this->spreadsheet = null; } } protected static function setOpenOffice(): void { Functions::setCompatibilityMode(Functions::COMPATIBILITY_OPENOFFICE); } protected static function setGnumeric(): void { Functions::setCompatibilityMode(Functions::COMPATIBILITY_GNUMERIC); } protected function mightHaveException(mixed $expectedResult): void { if ($expectedResult === 'exception') { $this->expectException(CalcException::class); } } protected function setCell(string $cell, mixed $value): void { if ($value !== null) { if (is_string($value) && is_numeric($value)) { $this->getSheet()->getCell($cell)->setValueExplicit($value, DataType::TYPE_STRING); } else { $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; } protected function setArrayAsValue(): void { $spreadsheet = $this->getSpreadsheet(); $calculation = Calculation::getInstance($spreadsheet); $calculation->setInstanceArrayReturnType( Calculation::RETURN_ARRAY_AS_VALUE ); } protected function setArrayAsArray(): void { $spreadsheet = $this->getSpreadsheet(); $calculation = Calculation::getInstance($spreadsheet); $calculation->setInstanceArrayReturnType( Calculation::RETURN_ARRAY_AS_ARRAY ); } }