StandardizeTest.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Statistical;
  3. use PhpOffice\PhpSpreadsheet\Calculation\Calculation;
  4. use PhpOffice\PhpSpreadsheet\Calculation\Statistical;
  5. use PHPUnit\Framework\TestCase;
  6. class StandardizeTest extends TestCase
  7. {
  8. /**
  9. * @dataProvider providerSTANDARDIZE
  10. *
  11. * @param mixed $expectedResult
  12. */
  13. public function testSTANDARDIZE($expectedResult, ...$args): void
  14. {
  15. $result = Statistical::STANDARDIZE(...$args);
  16. self::assertEqualsWithDelta($expectedResult, $result, 1E-12);
  17. }
  18. public function providerSTANDARDIZE(): array
  19. {
  20. return require 'tests/data/Calculation/Statistical/STANDARDIZE.php';
  21. }
  22. /**
  23. * @dataProvider providerStandardizeArray
  24. */
  25. public function testStandardizeArray(array $expectedResult, string $argument1, string $argument2, string $argument3): void
  26. {
  27. $calculation = Calculation::getInstance();
  28. $formula = "=STANDARDIZE({$argument1}, {$argument2}, {$argument3})";
  29. $result = $calculation->_calculateFormulaValue($formula);
  30. self::assertEqualsWithDelta($expectedResult, $result, 1.0e-14);
  31. }
  32. public function providerStandardizeArray(): array
  33. {
  34. return [
  35. 'row vector' => [[[-1.6666666666666667, -4.6666666666666667, -7.333333333333333, -10, -11.333333333333334]], '{12.5, 8, 4, 0, -2}', '15', '1.5'],
  36. 'column vector' => [[[0.25], [0.0], [-1.0]], '{5.5; 5; 3}', '5.0', '2.0'],
  37. 'matrix' => [[[0.25, -1.0], [-1.75, -2.75]], '{5.5, 3; 1.5, -0.5}', '5.0', '2.0'],
  38. ];
  39. }
  40. }