DefinedNamesCalculationTest.php 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Calculation;
  3. use PhpOffice\PhpSpreadsheet\IOFactory;
  4. use PHPUnit\Framework\TestCase;
  5. class DefinedNamesCalculationTest extends TestCase
  6. {
  7. /**
  8. * @dataProvider namedRangeCalculationTest1
  9. */
  10. public function testNamedRangeCalculations1(string $cellAddress, float $expectedValue): void
  11. {
  12. $inputFileType = 'Xlsx';
  13. $inputFileName = __DIR__ . '/../../data/Calculation/DefinedNames/NamedRanges.xlsx';
  14. $reader = IOFactory::createReader($inputFileType);
  15. $spreadsheet = $reader->load($inputFileName);
  16. $calculatedCellValue = $spreadsheet->getActiveSheet()->getCell($cellAddress)->getCalculatedValue();
  17. self::assertSame($expectedValue, $calculatedCellValue, "Failed calculation for cell {$cellAddress}");
  18. }
  19. /**
  20. * @dataProvider namedRangeCalculationTest2
  21. */
  22. public function testNamedRangeCalculationsWithAdjustedRateValue(string $cellAddress, float $expectedValue): void
  23. {
  24. $inputFileType = 'Xlsx';
  25. $inputFileName = __DIR__ . '/../../data/Calculation/DefinedNames/NamedRanges.xlsx';
  26. $reader = IOFactory::createReader($inputFileType);
  27. $spreadsheet = $reader->load($inputFileName);
  28. $spreadsheet->getActiveSheet()->getCell('B1')->setValue(12.5);
  29. $calculatedCellValue = $spreadsheet->getActiveSheet()->getCell($cellAddress)->getCalculatedValue();
  30. self::assertSame($expectedValue, $calculatedCellValue, "Failed calculation for cell {$cellAddress}");
  31. }
  32. /**
  33. * @dataProvider namedRangeCalculationTest1
  34. */
  35. public function testNamedFormulaCalculations1(string $cellAddress, float $expectedValue): void
  36. {
  37. $inputFileType = 'Xlsx';
  38. $inputFileName = __DIR__ . '/../../data/Calculation/DefinedNames/NamedFormulae.xlsx';
  39. $reader = IOFactory::createReader($inputFileType);
  40. $spreadsheet = $reader->load($inputFileName);
  41. $calculatedCellValue = $spreadsheet->getActiveSheet()->getCell($cellAddress)->getCalculatedValue();
  42. self::assertSame($expectedValue, $calculatedCellValue, "Failed calculation for cell {$cellAddress}");
  43. }
  44. /**
  45. * @dataProvider namedRangeCalculationTest2
  46. */
  47. public function testNamedFormulaeCalculationsWithAdjustedRateValue(string $cellAddress, float $expectedValue): void
  48. {
  49. $inputFileType = 'Xlsx';
  50. $inputFileName = __DIR__ . '/../../data/Calculation/DefinedNames/NamedFormulae.xlsx';
  51. $reader = IOFactory::createReader($inputFileType);
  52. $spreadsheet = $reader->load($inputFileName);
  53. $spreadsheet->getActiveSheet()->getCell('B1')->setValue(12.5);
  54. $calculatedCellValue = $spreadsheet->getActiveSheet()->getCell($cellAddress)->getCalculatedValue();
  55. self::assertSame($expectedValue, $calculatedCellValue, "Failed calculation for cell {$cellAddress}");
  56. }
  57. public function namedRangeCalculationTest1(): array
  58. {
  59. return [
  60. ['C4', 56.25],
  61. ['C5', 54.375],
  62. ['C6', 48.75],
  63. ['C7', 52.5],
  64. ['C8', 41.25],
  65. ['B10', 33.75],
  66. ['C10', 253.125],
  67. ];
  68. }
  69. public function namedRangeCalculationTest2(): array
  70. {
  71. return [
  72. ['C4', 93.75],
  73. ['C5', 90.625],
  74. ['C6', 81.25],
  75. ['C7', 87.5],
  76. ['C8', 68.75],
  77. ['C10', 421.875],
  78. ];
  79. }
  80. }