IfNaTest.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Logical;
  3. use PhpOffice\PhpSpreadsheet\Calculation\Calculation;
  4. use PhpOffice\PhpSpreadsheet\Calculation\Functions;
  5. use PhpOffice\PhpSpreadsheet\Calculation\Logical;
  6. use PHPUnit\Framework\TestCase;
  7. class IfNaTest extends TestCase
  8. {
  9. protected function setUp(): void
  10. {
  11. Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
  12. }
  13. /**
  14. * @dataProvider providerIFNA
  15. *
  16. * @param mixed $expectedResult
  17. * @param mixed $value
  18. * @param mixed $return
  19. */
  20. public function testIFNA($expectedResult, $value, $return): void
  21. {
  22. $result = Logical::IFNA($value, $return);
  23. self::assertEquals($expectedResult, $result);
  24. }
  25. public function providerIFNA(): array
  26. {
  27. return require 'tests/data/Calculation/Logical/IFNA.php';
  28. }
  29. /**
  30. * @dataProvider providerIfNaArray
  31. */
  32. public function testIfNaArray(array $expectedResult, string $argument1, string $argument2): void
  33. {
  34. $calculation = Calculation::getInstance();
  35. $formula = "=IFNA({$argument1}, {$argument2})";
  36. $result = $calculation->_calculateFormulaValue($formula);
  37. self::assertEquals($expectedResult, $result);
  38. }
  39. public function providerIfNaArray(): array
  40. {
  41. return [
  42. 'vector' => [
  43. [[2.5, '#DIV/0!', 6]],
  44. '{5/2, 5/0, "#N/A"}',
  45. 'MAX(ABS({-2,4,-6}))',
  46. ],
  47. 'return value' => [
  48. [[2.5, '#DIV/0!', [[2, 3, 4]]]],
  49. '{5/2, 5/0, "#N/A"}',
  50. '{2,3,4}',
  51. ],
  52. ];
  53. }
  54. }