Improved tests (#1110)
* Merge branch 'master' of C:\Projects\PHPOffice\PHPSpreadsheet\develop with conflicts. * New statistical tests * Sniffs * Additional statistical function unit tests * Additional statistical function unit tests * Fix case-sensitivity * Fix HARMEAN code logic * Unit tests refactored into individual files for all logical functions Implemented IFNA() * Fix silly typo * NOT needs ...args to allow for test when no argument passed * Codestyle * Use instance asserts
This commit is contained in:
parent
aaf996a165
commit
1c6f0b8a9d
|
@ -210,6 +210,7 @@ AND | \PhpOffice\PhpSpreadsheet\Calculation\Logical::logicalAnd
|
||||||
FALSE | \PhpOffice\PhpSpreadsheet\Calculation\Logical::FALSE
|
FALSE | \PhpOffice\PhpSpreadsheet\Calculation\Logical::FALSE
|
||||||
IF | \PhpOffice\PhpSpreadsheet\Calculation\Logical::STATEMENT_IF
|
IF | \PhpOffice\PhpSpreadsheet\Calculation\Logical::STATEMENT_IF
|
||||||
IFERROR | \PhpOffice\PhpSpreadsheet\Calculation\Logical::IFERROR
|
IFERROR | \PhpOffice\PhpSpreadsheet\Calculation\Logical::IFERROR
|
||||||
|
IFNA | \PhpOffice\PhpSpreadsheet\Calculation\Logical::IFNA
|
||||||
NOT | \PhpOffice\PhpSpreadsheet\Calculation\Logical::NOT
|
NOT | \PhpOffice\PhpSpreadsheet\Calculation\Logical::NOT
|
||||||
OR | \PhpOffice\PhpSpreadsheet\Calculation\Logical::logicalOr
|
OR | \PhpOffice\PhpSpreadsheet\Calculation\Logical::logicalOr
|
||||||
TRUE | \PhpOffice\PhpSpreadsheet\Calculation\Logical::TRUE
|
TRUE | \PhpOffice\PhpSpreadsheet\Calculation\Logical::TRUE
|
||||||
|
|
|
@ -207,6 +207,7 @@ Excel Function | Category | PhpSpreadsheet Function
|
||||||
--------------------|--------------------------------|-------------------------------------------
|
--------------------|--------------------------------|-------------------------------------------
|
||||||
IF | CATEGORY_LOGICAL | \PhpOffice\PhpSpreadsheet\Calculation\Logical::STATEMENT_IF
|
IF | CATEGORY_LOGICAL | \PhpOffice\PhpSpreadsheet\Calculation\Logical::STATEMENT_IF
|
||||||
IFERROR | CATEGORY_LOGICAL | \PhpOffice\PhpSpreadsheet\Calculation\Logical::IFERROR
|
IFERROR | CATEGORY_LOGICAL | \PhpOffice\PhpSpreadsheet\Calculation\Logical::IFERROR
|
||||||
|
IFNA | CATEGORY_LOGICAL | \PhpOffice\PhpSpreadsheet\Calculation\Logical::IFNA
|
||||||
IFS | CATEGORY_LOGICAL | **Not yet Implemented**
|
IFS | CATEGORY_LOGICAL | **Not yet Implemented**
|
||||||
IMABS | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMABS
|
IMABS | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMABS
|
||||||
IMAGINARY | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMAGINARY
|
IMAGINARY | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMAGINARY
|
||||||
|
|
|
@ -1018,6 +1018,11 @@ class Calculation
|
||||||
'functionCall' => [Logical::class, 'IFERROR'],
|
'functionCall' => [Logical::class, 'IFERROR'],
|
||||||
'argumentCount' => '2',
|
'argumentCount' => '2',
|
||||||
],
|
],
|
||||||
|
'IFNA' => [
|
||||||
|
'category' => Category::CATEGORY_LOGICAL,
|
||||||
|
'functionCall' => [Logical::class, 'IFNA'],
|
||||||
|
'argumentCount' => '2',
|
||||||
|
],
|
||||||
'IMABS' => [
|
'IMABS' => [
|
||||||
'category' => Category::CATEGORY_ENGINEERING,
|
'category' => Category::CATEGORY_ENGINEERING,
|
||||||
'functionCall' => [Engineering::class, 'IMABS'],
|
'functionCall' => [Engineering::class, 'IMABS'],
|
||||||
|
|
|
@ -347,4 +347,25 @@ class Logical
|
||||||
|
|
||||||
return self::statementIf(Functions::isError($testValue), $errorpart, $testValue);
|
return self::statementIf(Functions::isError($testValue), $errorpart, $testValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* IFNA.
|
||||||
|
*
|
||||||
|
* Excel Function:
|
||||||
|
* =IFNA(testValue,napart)
|
||||||
|
*
|
||||||
|
* @category Logical Functions
|
||||||
|
*
|
||||||
|
* @param mixed $testValue Value to check, is also the value returned when not an NA
|
||||||
|
* @param mixed $napart Value to return when testValue is an NA condition
|
||||||
|
*
|
||||||
|
* @return mixed The value of errorpart or testValue determined by error condition
|
||||||
|
*/
|
||||||
|
public static function IFNA($testValue = '', $napart = '')
|
||||||
|
{
|
||||||
|
$testValue = ($testValue === null) ? '' : Functions::flattenSingleValue($testValue);
|
||||||
|
$napart = ($napart === null) ? '' : Functions::flattenSingleValue($napart);
|
||||||
|
|
||||||
|
return self::statementIf(Functions::isNa($testValue), $napart, $testValue);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1778,7 +1778,7 @@ class Statistical
|
||||||
public static function HARMEAN(...$args)
|
public static function HARMEAN(...$args)
|
||||||
{
|
{
|
||||||
// Return value
|
// Return value
|
||||||
$returnValue = Functions::NA();
|
$returnValue = 0;
|
||||||
|
|
||||||
// Loop through arguments
|
// Loop through arguments
|
||||||
$aArgs = Functions::flattenArray($args);
|
$aArgs = Functions::flattenArray($args);
|
||||||
|
@ -1792,11 +1792,7 @@ class Statistical
|
||||||
if ($arg <= 0) {
|
if ($arg <= 0) {
|
||||||
return Functions::NAN();
|
return Functions::NAN();
|
||||||
}
|
}
|
||||||
if ($returnValue === null) {
|
$returnValue += (1 / $arg);
|
||||||
$returnValue = (1 / $arg);
|
|
||||||
} else {
|
|
||||||
$returnValue += (1 / $arg);
|
|
||||||
}
|
|
||||||
++$aCount;
|
++$aCount;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1806,7 +1802,7 @@ class Statistical
|
||||||
return 1 / ($returnValue / $aCount);
|
return 1 / ($returnValue / $aCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $returnValue;
|
return Functions::NA();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Logical;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Logical;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class AndTest extends TestCase
|
||||||
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerAND
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testAND($expectedResult, ...$args)
|
||||||
|
{
|
||||||
|
$result = Logical::logicalAnd(...$args);
|
||||||
|
$this->assertEquals($expectedResult, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerAND()
|
||||||
|
{
|
||||||
|
return require 'data/Calculation/Logical/AND.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Logical;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Logical;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class FalseTest extends TestCase
|
||||||
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testFALSE()
|
||||||
|
{
|
||||||
|
$result = Logical::FALSE();
|
||||||
|
$this->assertFalse($result);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Logical;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Logical;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class IfErrorTest extends TestCase
|
||||||
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerIFERROR
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
* @param $value
|
||||||
|
* @param $return
|
||||||
|
*/
|
||||||
|
public function testIFERROR($expectedResult, $value, $return)
|
||||||
|
{
|
||||||
|
$result = Logical::IFERROR($value, $return);
|
||||||
|
$this->assertEquals($expectedResult, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerIFERROR()
|
||||||
|
{
|
||||||
|
return require 'data/Calculation/Logical/IFERROR.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Logical;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Logical;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class IfNaTest extends TestCase
|
||||||
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerIFNA
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
* @param $value
|
||||||
|
* @param $return
|
||||||
|
*/
|
||||||
|
public function testIFNA($expectedResult, $value, $return)
|
||||||
|
{
|
||||||
|
$result = Logical::IFNA($value, $return);
|
||||||
|
$this->assertEquals($expectedResult, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerIFNA()
|
||||||
|
{
|
||||||
|
return require 'data/Calculation/Logical/IFNA.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Logical;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Logical;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class IfTest extends TestCase
|
||||||
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerIF
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testIF($expectedResult, ...$args)
|
||||||
|
{
|
||||||
|
$result = Logical::statementIf(...$args);
|
||||||
|
$this->assertEquals($expectedResult, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerIF()
|
||||||
|
{
|
||||||
|
return require 'data/Calculation/Logical/IF.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Logical;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Logical;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class NotTest extends TestCase
|
||||||
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerNOT
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testNOT($expectedResult, ...$args)
|
||||||
|
{
|
||||||
|
$result = Logical::NOT(...$args);
|
||||||
|
$this->assertEquals($expectedResult, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerNOT()
|
||||||
|
{
|
||||||
|
return require 'data/Calculation/Logical/NOT.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Logical;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Logical;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class OrTest extends TestCase
|
||||||
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerOR
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testOR($expectedResult, ...$args)
|
||||||
|
{
|
||||||
|
$result = Logical::logicalOr(...$args);
|
||||||
|
$this->assertEquals($expectedResult, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerOR()
|
||||||
|
{
|
||||||
|
return require 'data/Calculation/Logical/OR.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Logical;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Logical;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class SwitchTest extends TestCase
|
||||||
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerSwitch
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testSWITCH($expectedResult, ...$args)
|
||||||
|
{
|
||||||
|
$result = Logical::statementSwitch(...$args);
|
||||||
|
$this->assertEquals($expectedResult, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerSwitch()
|
||||||
|
{
|
||||||
|
return require 'data/Calculation/Logical/SWITCH.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Logical;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Logical;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class TrueTest extends TestCase
|
||||||
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testTRUE()
|
||||||
|
{
|
||||||
|
$result = Logical::TRUE();
|
||||||
|
$this->assertTrue($result);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Logical;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Logical;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class XorTest extends TestCase
|
||||||
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerXOR
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testXOR($expectedResult, ...$args)
|
||||||
|
{
|
||||||
|
$result = Logical::logicalXor(...$args);
|
||||||
|
$this->assertEquals($expectedResult, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerXOR()
|
||||||
|
{
|
||||||
|
return require 'data/Calculation/Logical/XOR.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Statistical;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class ExponDistTest extends TestCase
|
||||||
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerEXPONDIST
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testEXPONDIST($expectedResult, ...$args)
|
||||||
|
{
|
||||||
|
$result = Statistical::EXPONDIST(...$args);
|
||||||
|
$this->assertEquals($expectedResult, $result, '', 1E-12);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerEXPONDIST()
|
||||||
|
{
|
||||||
|
return require 'data/Calculation/Statistical/EXPONDIST.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Statistical;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class FisherInvTest extends TestCase
|
||||||
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerFISHERINV
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
* @param $value
|
||||||
|
*/
|
||||||
|
public function testFISHERINV($expectedResult, $value)
|
||||||
|
{
|
||||||
|
$result = Statistical::FISHERINV($value);
|
||||||
|
$this->assertEquals($expectedResult, $result, '', 1E-12);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerFISHERINV()
|
||||||
|
{
|
||||||
|
return require 'data/Calculation/Statistical/FISHERINV.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Statistical;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class FisherTest extends TestCase
|
||||||
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerFISHER
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
* @param $value
|
||||||
|
*/
|
||||||
|
public function testFISHER($expectedResult, $value)
|
||||||
|
{
|
||||||
|
$result = Statistical::FISHER($value);
|
||||||
|
$this->assertEquals($expectedResult, $result, '', 1E-12);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerFISHER()
|
||||||
|
{
|
||||||
|
return require 'data/Calculation/Statistical/FISHER.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Statistical;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class GammaDistTest extends TestCase
|
||||||
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerGAMMADIST
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testGAMMADIST($expectedResult, ...$args)
|
||||||
|
{
|
||||||
|
$result = Statistical::GAMMADIST(...$args);
|
||||||
|
$this->assertEquals($expectedResult, $result, '', 1E-12);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerGAMMADIST()
|
||||||
|
{
|
||||||
|
return require 'data/Calculation/Statistical/GAMMADIST.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Statistical;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class GammaInvTest extends TestCase
|
||||||
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerGAMMAINV
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testGAMMAINV($expectedResult, ...$args)
|
||||||
|
{
|
||||||
|
$result = Statistical::GAMMAINV(...$args);
|
||||||
|
$this->assertEquals($expectedResult, $result, '', 1E-12);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerGAMMAINV()
|
||||||
|
{
|
||||||
|
return require 'data/Calculation/Statistical/GAMMAINV.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Statistical;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class GammaLnTest extends TestCase
|
||||||
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerGAMMALN
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testGAMMALN($expectedResult, ...$args)
|
||||||
|
{
|
||||||
|
$result = Statistical::GAMMALN(...$args);
|
||||||
|
$this->assertEquals($expectedResult, $result, '', 1E-12);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerGAMMALN()
|
||||||
|
{
|
||||||
|
return require 'data/Calculation/Statistical/GAMMALN.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Statistical;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class GeoMeanTest extends TestCase
|
||||||
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerGEOMEAN
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testGEOMEAN($expectedResult, ...$args)
|
||||||
|
{
|
||||||
|
$result = Statistical::GEOMEAN(...$args);
|
||||||
|
$this->assertEquals($expectedResult, $result, '', 1E-12);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerGEOMEAN()
|
||||||
|
{
|
||||||
|
return require 'data/Calculation/Statistical/GEOMEAN.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Statistical;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class HarMeanTest extends TestCase
|
||||||
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerHARMEAN
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testHARMEAN($expectedResult, ...$args)
|
||||||
|
{
|
||||||
|
$result = Statistical::HARMEAN(...$args);
|
||||||
|
$this->assertEquals($expectedResult, $result, '', 1E-12);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerHARMEAN()
|
||||||
|
{
|
||||||
|
return require 'data/Calculation/Statistical/HARMEAN.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Statistical;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class MedianTest extends TestCase
|
||||||
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerMEDIAN
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testMEDIAN($expectedResult, ...$args)
|
||||||
|
{
|
||||||
|
$result = Statistical::MEDIAN(...$args);
|
||||||
|
$this->assertEquals($expectedResult, $result, '', 1E-12);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerMEDIAN()
|
||||||
|
{
|
||||||
|
return require 'data/Calculation/Statistical/MEDIAN.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,139 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace PhpOffice\PhpSpreadsheetTests\Calculation;
|
|
||||||
|
|
||||||
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
|
||||||
use PhpOffice\PhpSpreadsheet\Calculation\Logical;
|
|
||||||
use PHPUnit\Framework\TestCase;
|
|
||||||
|
|
||||||
class LogicalTest extends TestCase
|
|
||||||
{
|
|
||||||
public function setUp()
|
|
||||||
{
|
|
||||||
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testTRUE()
|
|
||||||
{
|
|
||||||
$result = Logical::TRUE();
|
|
||||||
self::assertTrue($result);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testFALSE()
|
|
||||||
{
|
|
||||||
$result = Logical::FALSE();
|
|
||||||
self::assertFalse($result);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dataProvider providerAND
|
|
||||||
*
|
|
||||||
* @param mixed $expectedResult
|
|
||||||
*/
|
|
||||||
public function testAND($expectedResult, ...$args)
|
|
||||||
{
|
|
||||||
$result = Logical::logicalAnd(...$args);
|
|
||||||
self::assertEquals($expectedResult, $result);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function providerAND()
|
|
||||||
{
|
|
||||||
return require 'data/Calculation/Logical/AND.php';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dataProvider providerOR
|
|
||||||
*
|
|
||||||
* @param mixed $expectedResult
|
|
||||||
*/
|
|
||||||
public function testOR($expectedResult, ...$args)
|
|
||||||
{
|
|
||||||
$result = Logical::logicalOr(...$args);
|
|
||||||
self::assertEquals($expectedResult, $result);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function providerOR()
|
|
||||||
{
|
|
||||||
return require 'data/Calculation/Logical/OR.php';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dataProvider providerXOR
|
|
||||||
*
|
|
||||||
* @param mixed $expectedResult
|
|
||||||
*/
|
|
||||||
public function testXOR($expectedResult, ...$args)
|
|
||||||
{
|
|
||||||
$result = Logical::logicalXor(...$args);
|
|
||||||
self::assertEquals($expectedResult, $result);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function providerXOR()
|
|
||||||
{
|
|
||||||
return require 'data/Calculation/Logical/XOR.php';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dataProvider providerNOT
|
|
||||||
*
|
|
||||||
* @param mixed $expectedResult
|
|
||||||
*/
|
|
||||||
public function testNOT($expectedResult, ...$args)
|
|
||||||
{
|
|
||||||
$result = Logical::NOT(...$args);
|
|
||||||
self::assertEquals($expectedResult, $result);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function providerNOT()
|
|
||||||
{
|
|
||||||
return require 'data/Calculation/Logical/NOT.php';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dataProvider providerIF
|
|
||||||
*
|
|
||||||
* @param mixed $expectedResult
|
|
||||||
*/
|
|
||||||
public function testIF($expectedResult, ...$args)
|
|
||||||
{
|
|
||||||
$result = Logical::statementIf(...$args);
|
|
||||||
self::assertEquals($expectedResult, $result);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function providerIF()
|
|
||||||
{
|
|
||||||
return require 'data/Calculation/Logical/IF.php';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dataProvider providerIFERROR
|
|
||||||
*
|
|
||||||
* @param mixed $expectedResult
|
|
||||||
*/
|
|
||||||
public function testIFERROR($expectedResult, ...$args)
|
|
||||||
{
|
|
||||||
$result = Logical::IFERROR(...$args);
|
|
||||||
self::assertEquals($expectedResult, $result);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function providerIFERROR()
|
|
||||||
{
|
|
||||||
return require 'data/Calculation/Logical/IFERROR.php';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dataProvider providerSwitch
|
|
||||||
*
|
|
||||||
* @param mixed $expectedResult
|
|
||||||
*/
|
|
||||||
public function testSWITCH($expectedResult, ...$args)
|
|
||||||
{
|
|
||||||
$result = Logical::statementSwitch(...$args);
|
|
||||||
self::assertEquals($expectedResult, $result);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function providerSwitch()
|
|
||||||
{
|
|
||||||
return require 'data/Calculation/Logical/SWITCH.php';
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
55,
|
||||||
|
55, 'not found',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'not found',
|
||||||
|
'#N/A', 'not found',
|
||||||
|
],
|
||||||
|
];
|
|
@ -0,0 +1,12 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
0.606530659713,
|
||||||
|
0.5, 1, false,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0.393469340287,
|
||||||
|
0.5, 1, true,
|
||||||
|
],
|
||||||
|
];
|
|
@ -0,0 +1,16 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
-1.472219489583,
|
||||||
|
-0.9,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-0.255412811883,
|
||||||
|
-0.25,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
1.098612288668,
|
||||||
|
0.8,
|
||||||
|
]
|
||||||
|
];
|
|
@ -0,0 +1,20 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
-0.197375320225,
|
||||||
|
-0.2,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0.761594155956,
|
||||||
|
1.0,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0.992631520201,
|
||||||
|
2.8,
|
||||||
|
],
|
||||||
|
];
|
|
@ -0,0 +1,12 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
0.112020903828,
|
||||||
|
6, 3, 2, false,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0.576809918873,
|
||||||
|
6, 3, 2, true,
|
||||||
|
],
|
||||||
|
];
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
5.348120627447,
|
||||||
|
0.5, 3, 2,
|
||||||
|
],
|
||||||
|
];
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
2.453736570842,
|
||||||
|
4.5,
|
||||||
|
],
|
||||||
|
];
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
1.6226711115996,
|
||||||
|
2.5, 3, 0.5, 1, 3,
|
||||||
|
],
|
||||||
|
];
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
1.2295081967213,
|
||||||
|
2.5, 3, 0.5, 1, 3,
|
||||||
|
],
|
||||||
|
];
|
|
@ -0,0 +1,16 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
8.0,
|
||||||
|
1, 4.5, 7, 8, 9, 13, 14,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
8.5,
|
||||||
|
1, 4.5, 7, 8, 9, 13, 14, 12,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
8.0,
|
||||||
|
1, 4.5, 7, 8, 9, 13, 14, '',
|
||||||
|
],
|
||||||
|
];
|
Loading…
Reference in New Issue