ImRealTest.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Engineering;
  3. use PhpOffice\PhpSpreadsheet\Calculation\Calculation;
  4. use PhpOffice\PhpSpreadsheet\Calculation\Engineering;
  5. use PhpOffice\PhpSpreadsheet\Calculation\Functions;
  6. use PHPUnit\Framework\TestCase;
  7. class ImRealTest extends TestCase
  8. {
  9. const COMPLEX_PRECISION = 1E-8;
  10. protected function setUp(): void
  11. {
  12. Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
  13. }
  14. /**
  15. * @dataProvider providerIMREAL
  16. *
  17. * @param mixed $expectedResult
  18. * @param mixed $value
  19. */
  20. public function testIMREAL($expectedResult, $value): void
  21. {
  22. $result = Engineering::IMREAL($value);
  23. self::assertEqualsWithDelta($expectedResult, $result, self::COMPLEX_PRECISION);
  24. }
  25. public function providerIMREAL(): array
  26. {
  27. return require 'tests/data/Calculation/Engineering/IMREAL.php';
  28. }
  29. /**
  30. * @dataProvider providerImRealArray
  31. */
  32. public function testImRealArray(array $expectedResult, string $complex): void
  33. {
  34. $calculation = Calculation::getInstance();
  35. $formula = "=IMREAL({$complex})";
  36. $result = $calculation->_calculateFormulaValue($formula);
  37. self::assertEquals($expectedResult, $result);
  38. }
  39. public function providerImRealArray(): array
  40. {
  41. return [
  42. 'row/column vector' => [
  43. [
  44. [-1.0, 0.0, 1.0],
  45. [-1.0, 0.0, 1.0],
  46. [-1.0, 0.0, 1.0],
  47. [-1.0, 0.0, 1.0],
  48. ],
  49. '{"-1-2.5i", "-2.5i", "1-2.5i"; "-1-i", "-i", "1-i"; "-1+i", "i", "1+1"; "-1+2.5i", "+2.5i", "1+2.5i"}',
  50. ],
  51. ];
  52. }
  53. }