SqrtPiTest.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\MathTrig;
  3. use PhpOffice\PhpSpreadsheet\Calculation\Calculation;
  4. class SqrtPiTest extends AllSetupTeardown
  5. {
  6. /**
  7. * @dataProvider providerSQRTPI
  8. *
  9. * @param mixed $expectedResult
  10. * @param mixed $number
  11. */
  12. public function testSQRTPI($expectedResult, $number): void
  13. {
  14. $this->mightHaveException($expectedResult);
  15. $sheet = $this->getSheet();
  16. if ($number !== null) {
  17. $sheet->getCell('A1')->setValue($number);
  18. }
  19. if ($number === 'omitted') {
  20. $sheet->getCell('B1')->setValue('=SQRTPI()');
  21. } else {
  22. $sheet->getCell('B1')->setValue('=SQRTPI(A1)');
  23. }
  24. $result = $sheet->getCell('B1')->getCalculatedValue();
  25. self::assertEqualsWithDelta($expectedResult, $result, 1E-12);
  26. }
  27. public function providerSQRTPI(): array
  28. {
  29. return require 'tests/data/Calculation/MathTrig/SQRTPI.php';
  30. }
  31. /**
  32. * @dataProvider providerSqrtPiArray
  33. */
  34. public function testSqrtPiArray(array $expectedResult, string $array): void
  35. {
  36. $calculation = Calculation::getInstance();
  37. $formula = "=SQRTPI({$array})";
  38. $result = $calculation->_calculateFormulaValue($formula);
  39. self::assertEqualsWithDelta($expectedResult, $result, 1.0e-12);
  40. }
  41. public function providerSqrtPiArray(): array
  42. {
  43. return [
  44. 'row vector' => [[[5.317361552716, 6.2665706865775, 8.6832150546992]], '{9, 12.5, 24}'],
  45. 'column vector' => [[[5.3173615527166], [6.2665706865775], [8.6832150546992]], '{9; 12.5; 24}'],
  46. 'matrix' => [[[5.3173615527166, 6.2665706865775], [8.6832150546992, 14.1796308072441]], '{9, 12.5; 24, 64}'],
  47. ];
  48. }
  49. }