getConstant($constantName); self::assertSame($expectedValue, $result); } /** return array */ public static function providerMaxRowsAndColumns(): array { return [ [1048576, AddressRange::class, 'MAX_ROW'], ['XFD', AddressRange::class, 'MAX_COLUMN'], [16384, AddressRange::class, 'MAX_COLUMN_INT'], [16384, AddressRange::class, 'MAX_ROW_XLS_OLD'], [65536, AddressRange::class, 'MAX_ROW_XLS'], ['IV', AddressRange::class, 'MAX_COLUMN_XLS'], [256, AddressRange::class, 'MAX_COLUMN_INT_XLS'], ['/^[A-Z]+1:[A-Z]+1048576$/', Style::class, 'REGEX_WHOLE_COLUMN'], ['/^A\d+:XFD\d+$/', Style::class, 'REGEX_WHOLE_ROW'], ['/^([A-Z]+1\:[A-Z]+)(16384|65536)$/', Xls::class, 'REGEX_WHOLE_COLUMN'], ['${1}1048576', Xls::class, 'REGEX_WHOLE_COLUMN_REPLACE'], ['/^(A\d+\:)IV(\d+)$/', Xls::class, 'REGEX_WHOLE_ROW'], ['${1}XFD${2}', Xls::class, 'REGEX_WHOLE_ROW_REPLACE'], ]; } #[DataProvider('providerAddressLimits')] public function testWriterXlsParser(bool $expected, string $cellAddress): void { $reflectionMethod = new ReflectionMethod(Parser::class, 'cellToPackedRowCol'); $spreadsheet = new Spreadsheet(); $reflectionClass = new Parser($spreadsheet); try { $reflectionMethod->invokeArgs($reflectionClass, [$cellAddress]); $result = true; } catch (WriterException) { $result = false; } $spreadsheet->disconnectWorksheets(); self::assertSame($expected, $result); } /** return array */ public static function providerAddressLimits(): array { return [ 'last possible row' => [true, 'A65536'], 'beyond last possible row' => [false, 'A65537'], 'last possible column' => [true, 'IV1'], 'beyond last possible column' => [false, 'IW1'], ]; } }