AddressHelperTest.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Cell;
  3. use PhpOffice\PhpSpreadsheet\Cell\AddressHelper;
  4. use PhpOffice\PhpSpreadsheet\Exception;
  5. use PHPUnit\Framework\TestCase;
  6. class AddressHelperTest extends TestCase
  7. {
  8. /**
  9. * @dataProvider providerR1C1ConversionToA1Absolute
  10. */
  11. public function testR1C1ConversionToA1Absolute(string $expectedValue, string $address): void
  12. {
  13. $actualValue = AddressHelper::convertToA1($address);
  14. self::assertSame($expectedValue, $actualValue);
  15. }
  16. public function providerR1C1ConversionToA1Absolute(): array
  17. {
  18. return require 'tests/data/Cell/R1C1ConversionToA1Absolute.php';
  19. }
  20. /**
  21. * @dataProvider providerR1C1ConversionToA1Relative
  22. */
  23. public function testR1C1ConversionToA1Relative(
  24. string $expectedValue,
  25. string $address,
  26. ?int $row = null,
  27. ?int $column = null
  28. ): void {
  29. if ($row === null) {
  30. if ($column === null) {
  31. $actualValue = AddressHelper::convertToA1($address);
  32. } else {
  33. $actualValue = AddressHelper::convertToA1($address, $column);
  34. }
  35. } elseif ($column === null) {
  36. $actualValue = AddressHelper::convertToA1($address, $row);
  37. } else {
  38. $actualValue = AddressHelper::convertToA1($address, $row, $column);
  39. }
  40. self::assertSame($expectedValue, $actualValue);
  41. }
  42. public function providerR1C1ConversionToA1Relative(): array
  43. {
  44. return require 'tests/data/Cell/R1C1ConversionToA1Relative.php';
  45. }
  46. /**
  47. * @dataProvider providerR1C1ConversionToA1Exception
  48. */
  49. public function testR1C1ConversionToA1Exception(string $address): void
  50. {
  51. $this->expectException(Exception::class);
  52. AddressHelper::convertToA1($address);
  53. }
  54. public function providerR1C1ConversionToA1Exception(): array
  55. {
  56. return require 'tests/data/Cell/R1C1ConversionToA1Exception.php';
  57. }
  58. /**
  59. * @dataProvider providerA1ConversionToR1C1Absolute
  60. */
  61. public function testA1ConversionToR1C1Absolute(string $expectedValue, string $address): void
  62. {
  63. $actualValue = AddressHelper::convertToR1C1($address);
  64. self::assertSame($expectedValue, $actualValue);
  65. }
  66. public function providerA1ConversionToR1C1Absolute(): array
  67. {
  68. return require 'tests/data/Cell/A1ConversionToR1C1Absolute.php';
  69. }
  70. /**
  71. * @dataProvider providerA1ConversionToR1C1Relative
  72. */
  73. public function testA1ConversionToR1C1Relative(string $expectedValue, string $address, ?int $row = null, ?int $column = null): void
  74. {
  75. $actualValue = AddressHelper::convertToR1C1($address, $row, $column);
  76. self::assertSame($expectedValue, $actualValue);
  77. }
  78. public function providerA1ConversionToR1C1Relative(): array
  79. {
  80. return require 'tests/data/Cell/A1ConversionToR1C1Relative.php';
  81. }
  82. /**
  83. * @dataProvider providerA1ConversionToR1C1Exception
  84. */
  85. public function testA1ConversionToR1C1Exception(string $address): void
  86. {
  87. $this->expectException(Exception::class);
  88. AddressHelper::convertToR1C1($address);
  89. }
  90. public function providerA1ConversionToR1C1Exception(): array
  91. {
  92. return require 'tests/data/Cell/A1ConversionToR1C1Exception.php';
  93. }
  94. /**
  95. * @dataProvider providerConvertFormulaToA1FromSpreadsheetXml
  96. */
  97. public function testConvertFormulaToA1SpreadsheetXml(string $expectedValue, string $formula): void
  98. {
  99. $actualValue = AddressHelper::convertFormulaToA1($formula);
  100. self::assertSame($expectedValue, $actualValue);
  101. }
  102. public function providerConvertFormulaToA1FromSpreadsheetXml(): array
  103. {
  104. return require 'tests/data/Cell/ConvertFormulaToA1FromSpreadsheetXml.php';
  105. }
  106. /**
  107. * @dataProvider providerConvertFormulaToA1FromR1C1Absolute
  108. */
  109. public function testConvertFormulaToA1R1C1Absolute(string $expectedValue, string $formula): void
  110. {
  111. $actualValue = AddressHelper::convertFormulaToA1($formula);
  112. self::assertSame($expectedValue, $actualValue);
  113. }
  114. public function providerConvertFormulaToA1FromR1C1Absolute(): array
  115. {
  116. return require 'tests/data/Cell/ConvertFormulaToA1FromR1C1Absolute.php';
  117. }
  118. /**
  119. * @dataProvider providerConvertFormulaToA1FromR1C1Relative
  120. */
  121. public function testConvertFormulaToA1FromR1C1Relative(string $expectedValue, string $formula, int $row, int $column): void
  122. {
  123. $actualValue = AddressHelper::convertFormulaToA1($formula, $row, $column);
  124. self::assertSame($expectedValue, $actualValue);
  125. }
  126. public function providerConvertFormulaToA1FromR1C1Relative(): array
  127. {
  128. return require 'tests/data/Cell/ConvertFormulaToA1FromR1C1Relative.php';
  129. }
  130. }