PoissonTest.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Statistical;
  3. use PhpOffice\PhpSpreadsheet\Calculation\Calculation;
  4. use PhpOffice\PhpSpreadsheet\Calculation\Functions;
  5. use PhpOffice\PhpSpreadsheet\Calculation\Statistical;
  6. use PHPUnit\Framework\TestCase;
  7. class PoissonTest extends TestCase
  8. {
  9. protected function setUp(): void
  10. {
  11. Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
  12. }
  13. /**
  14. * @dataProvider providerPOISSON
  15. *
  16. * @param mixed $expectedResult
  17. */
  18. public function testPOISSON($expectedResult, ...$args): void
  19. {
  20. $result = Statistical::POISSON(...$args);
  21. self::assertEqualsWithDelta($expectedResult, $result, 1E-12);
  22. }
  23. public function providerPOISSON(): array
  24. {
  25. return require 'tests/data/Calculation/Statistical/POISSON.php';
  26. }
  27. /**
  28. * @dataProvider providerPoissonArray
  29. */
  30. public function testPoissonArray(array $expectedResult, string $values, string $mean): void
  31. {
  32. $calculation = Calculation::getInstance();
  33. $formula = "=POISSON({$values}, {$mean}, false)";
  34. $result = $calculation->_calculateFormulaValue($formula);
  35. self::assertEqualsWithDelta($expectedResult, $result, 1.0e-14);
  36. }
  37. public function providerPoissonArray(): array
  38. {
  39. return [
  40. 'row/column vectors' => [
  41. [
  42. [0.4749316557209494, 0.41547307344655265, 0.028388126533408903],
  43. [0.3081373033023279, 0.3299417281086086, 0.0867439330307142],
  44. [0.14758417287196898, 0.19139299302082188, 0.1804470443154836],
  45. ],
  46. '{0.125, 0.5, 3}',
  47. '{0.7; 1.2; 2}',
  48. ],
  49. ];
  50. }
  51. }