ErfCTest.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Engineering;
  3. use PhpOffice\PhpSpreadsheet\Calculation\Calculation;
  4. use PhpOffice\PhpSpreadsheet\Calculation\Engineering;
  5. use PHPUnit\Framework\TestCase;
  6. class ErfCTest extends TestCase
  7. {
  8. const ERF_PRECISION = 1E-12;
  9. /**
  10. * @dataProvider providerERFC
  11. *
  12. * @param mixed $lower
  13. * @param mixed $expectedResult
  14. */
  15. public function testERFC($expectedResult, $lower): void
  16. {
  17. $result = Engineering::ERFC($lower);
  18. self::assertEqualsWithDelta($expectedResult, $result, self::ERF_PRECISION);
  19. }
  20. public function providerERFC(): array
  21. {
  22. return require 'tests/data/Calculation/Engineering/ERFC.php';
  23. }
  24. /**
  25. * @dataProvider providerErfCArray
  26. */
  27. public function testErfCArray(array $expectedResult, string $lower): void
  28. {
  29. $calculation = Calculation::getInstance();
  30. $formula = "=ERFC({$lower})";
  31. $result = $calculation->_calculateFormulaValue($formula);
  32. self::assertEqualsWithDelta($expectedResult, $result, self::ERF_PRECISION);
  33. }
  34. public function providerErfCArray(): array
  35. {
  36. return [
  37. 'row vector' => [
  38. [
  39. [1.9103139782296354, 1.5204998778130465, 1.0, 0.7236736098317631, 0.0004069520174449588],
  40. ],
  41. '{-1.2, -0.5, 0.0, 0.25, 2.5}',
  42. ],
  43. ];
  44. }
  45. }