FormulaAsStringTest.php 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Calculation;
  3. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  4. use PHPUnit\Framework\TestCase;
  5. class FormulaAsStringTest extends TestCase
  6. {
  7. /**
  8. * @dataProvider providerFunctionsAsString
  9. *
  10. * @param mixed $expectedResult
  11. * @param string $formula
  12. */
  13. public function testFunctionsAsString($expectedResult, $formula): void
  14. {
  15. $spreadsheet = new Spreadsheet();
  16. $workSheet = $spreadsheet->getActiveSheet();
  17. $workSheet->setCellValue('A1', 10);
  18. $workSheet->setCellValue('A2', 20);
  19. $workSheet->setCellValue('A3', 30);
  20. $workSheet->setCellValue('A4', 40);
  21. $spreadsheet->addNamedRange(new \PhpOffice\PhpSpreadsheet\NamedRange('namedCell', $workSheet, '$A$4'));
  22. $workSheet->setCellValue('B1', 'uPPER');
  23. $workSheet->setCellValue('B2', '=TRUE()');
  24. $workSheet->setCellValue('B3', '=FALSE()');
  25. $ws2 = $spreadsheet->createSheet();
  26. $ws2->setCellValue('A1', 100);
  27. $ws2->setCellValue('A2', 200);
  28. $ws2->setTitle('Sheet2');
  29. $spreadsheet->addNamedRange(new \PhpOffice\PhpSpreadsheet\NamedRange('A2B', $ws2, '$A$2'));
  30. $spreadsheet->setActiveSheetIndex(0);
  31. $cell2 = $workSheet->getCell('D1');
  32. $cell2->setValue($formula);
  33. $result = $cell2->getCalculatedValue();
  34. self::assertEquals($expectedResult, $result);
  35. }
  36. public function providerFunctionsAsString(): array
  37. {
  38. return require 'tests/data/Calculation/FunctionsAsString.php';
  39. }
  40. }