Merge pull request #1113 from PHPOffice/Further-Test-Refactoring
Further test refactoring
This commit is contained in:
commit
8972d370a6
|
@ -9,7 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org).
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- ...
|
- Implementation of IFNA() logical function
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
|
|
|
@ -220,10 +220,9 @@ class MathTrig
|
||||||
return Functions::NAN();
|
return Functions::NAN();
|
||||||
}
|
}
|
||||||
$factLoop = floor($factVal);
|
$factLoop = floor($factVal);
|
||||||
if (Functions::getCompatibilityMode() == Functions::COMPATIBILITY_GNUMERIC) {
|
if ((Functions::getCompatibilityMode() == Functions::COMPATIBILITY_GNUMERIC) &&
|
||||||
if ($factVal > $factLoop) {
|
($factVal > $factLoop)) {
|
||||||
return Functions::NAN();
|
return Functions::NAN();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$factorial = 1;
|
$factorial = 1;
|
||||||
|
|
|
@ -52,7 +52,7 @@ class TextData
|
||||||
return ($stringValue) ? Calculation::getTRUE() : Calculation::getFALSE();
|
return ($stringValue) ? Calculation::getTRUE() : Calculation::getFALSE();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (self::$invalidChars == null) {
|
if (self::$invalidChars === null) {
|
||||||
self::$invalidChars = range(chr(0), chr(31));
|
self::$invalidChars = range(chr(0), chr(31));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -84,6 +84,15 @@ class TextData
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static function convertBooleanValue($value)
|
||||||
|
{
|
||||||
|
if (Functions::getCompatibilityMode() == Functions::COMPATIBILITY_OPENOFFICE) {
|
||||||
|
return (int) $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ($value) ? Calculation::getTRUE() : Calculation::getFALSE();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ASCIICODE.
|
* ASCIICODE.
|
||||||
*
|
*
|
||||||
|
@ -98,11 +107,7 @@ class TextData
|
||||||
}
|
}
|
||||||
$characters = Functions::flattenSingleValue($characters);
|
$characters = Functions::flattenSingleValue($characters);
|
||||||
if (is_bool($characters)) {
|
if (is_bool($characters)) {
|
||||||
if (Functions::getCompatibilityMode() == Functions::COMPATIBILITY_OPENOFFICE) {
|
$characters = self::convertBooleanValue($characters);
|
||||||
$characters = (int) $characters;
|
|
||||||
} else {
|
|
||||||
$characters = ($characters) ? Calculation::getTRUE() : Calculation::getFALSE();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$character = $characters;
|
$character = $characters;
|
||||||
|
@ -126,11 +131,7 @@ class TextData
|
||||||
$aArgs = Functions::flattenArray($args);
|
$aArgs = Functions::flattenArray($args);
|
||||||
foreach ($aArgs as $arg) {
|
foreach ($aArgs as $arg) {
|
||||||
if (is_bool($arg)) {
|
if (is_bool($arg)) {
|
||||||
if (Functions::getCompatibilityMode() == Functions::COMPATIBILITY_OPENOFFICE) {
|
$arg = self::convertBooleanValue($arg);
|
||||||
$arg = (int) $arg;
|
|
||||||
} else {
|
|
||||||
$arg = ($arg) ? Calculation::getTRUE() : Calculation::getFALSE();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
$returnValue .= $arg;
|
$returnValue .= $arg;
|
||||||
}
|
}
|
||||||
|
@ -197,7 +198,7 @@ class TextData
|
||||||
}
|
}
|
||||||
|
|
||||||
if (($offset > 0) && (StringHelper::countCharacters($haystack) > $offset)) {
|
if (($offset > 0) && (StringHelper::countCharacters($haystack) > $offset)) {
|
||||||
if (StringHelper::countCharacters($needle) == 0) {
|
if (StringHelper::countCharacters($needle) === 0) {
|
||||||
return $offset;
|
return $offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -232,7 +233,7 @@ class TextData
|
||||||
}
|
}
|
||||||
|
|
||||||
if (($offset > 0) && (StringHelper::countCharacters($haystack) > $offset)) {
|
if (($offset > 0) && (StringHelper::countCharacters($haystack) > $offset)) {
|
||||||
if (StringHelper::countCharacters($needle) == 0) {
|
if (StringHelper::countCharacters($needle) === 0) {
|
||||||
return $offset;
|
return $offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -659,11 +660,7 @@ class TextData
|
||||||
if ($ignoreEmpty && trim($arg) == '') {
|
if ($ignoreEmpty && trim($arg) == '') {
|
||||||
unset($aArgs[$key]);
|
unset($aArgs[$key]);
|
||||||
} elseif (is_bool($arg)) {
|
} elseif (is_bool($arg)) {
|
||||||
if (Functions::getCompatibilityMode() == Functions::COMPATIBILITY_OPENOFFICE) {
|
$arg = self::convertBooleanValue($arg);
|
||||||
$arg = (int) $arg;
|
|
||||||
} else {
|
|
||||||
$arg = ($arg) ? Calculation::getTRUE() : Calculation::getFALSE();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,38 +13,6 @@ class FinancialTest extends TestCase
|
||||||
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @dataProvider providerACCRINT
|
|
||||||
*
|
|
||||||
* @param mixed $expectedResult
|
|
||||||
*/
|
|
||||||
public function testACCRINT($expectedResult, ...$args)
|
|
||||||
{
|
|
||||||
$result = Financial::ACCRINT(...$args);
|
|
||||||
self::assertEquals($expectedResult, $result, '', 1E-8);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function providerACCRINT()
|
|
||||||
{
|
|
||||||
return require 'data/Calculation/Financial/ACCRINT.php';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dataProvider providerACCRINTM
|
|
||||||
*
|
|
||||||
* @param mixed $expectedResult
|
|
||||||
*/
|
|
||||||
public function testACCRINTM($expectedResult, ...$args)
|
|
||||||
{
|
|
||||||
$result = Financial::ACCRINTM(...$args);
|
|
||||||
self::assertEquals($expectedResult, $result, '', 1E-8);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function providerACCRINTM()
|
|
||||||
{
|
|
||||||
return require 'data/Calculation/Financial/ACCRINTM.php';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider providerAMORDEGRC
|
* @dataProvider providerAMORDEGRC
|
||||||
*
|
*
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Financial;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Financial;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class AccrintMTest extends TestCase
|
||||||
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerACCRINTM
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testACCRINTM($expectedResult, ...$args)
|
||||||
|
{
|
||||||
|
$result = Financial::ACCRINTM(...$args);
|
||||||
|
self::assertEquals($expectedResult, $result, '', 1E-8);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerACCRINTM()
|
||||||
|
{
|
||||||
|
return require 'data/Calculation/Financial/ACCRINTM.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Financial;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Financial;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class AccrintTest extends TestCase
|
||||||
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerACCRINT
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testACCRINT($expectedResult, ...$args)
|
||||||
|
{
|
||||||
|
$result = Financial::ACCRINT(...$args);
|
||||||
|
$this->assertEquals($expectedResult, $result, '', 1E-8);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerACCRINT()
|
||||||
|
{
|
||||||
|
return require 'data/Calculation/Financial/ACCRINT.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\LookupRef;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\LookupRef;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class ChooseTest extends TestCase
|
||||||
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerCHOOSE
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testCHOOSE($expectedResult, ...$args)
|
||||||
|
{
|
||||||
|
$result = LookupRef::CHOOSE(...$args);
|
||||||
|
$this->assertEquals($expectedResult, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerCHOOSE()
|
||||||
|
{
|
||||||
|
return require 'data/Calculation/LookupRef/CHOOSE.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\LookupRef;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\LookupRef;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class ColumnsTest extends TestCase
|
||||||
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerCOLUMNS
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testCOLUMNS($expectedResult, ...$args)
|
||||||
|
{
|
||||||
|
$result = LookupRef::COLUMNS(...$args);
|
||||||
|
$this->assertEquals($expectedResult, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerCOLUMNS()
|
||||||
|
{
|
||||||
|
return require 'data/Calculation/LookupRef/COLUMNS.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\LookupRef;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\LookupRef;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class HLookupTest extends TestCase
|
||||||
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerHLOOKUP
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testHLOOKUP($expectedResult, ...$args)
|
||||||
|
{
|
||||||
|
$result = LookupRef::HLOOKUP(...$args);
|
||||||
|
$this->assertEquals($expectedResult, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerHLOOKUP()
|
||||||
|
{
|
||||||
|
return require 'data/Calculation/LookupRef/HLOOKUP.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\LookupRef;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\LookupRef;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class IndexTest extends TestCase
|
||||||
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerINDEX
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testINDEX($expectedResult, ...$args)
|
||||||
|
{
|
||||||
|
$result = LookupRef::INDEX(...$args);
|
||||||
|
$this->assertEquals($expectedResult, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerINDEX()
|
||||||
|
{
|
||||||
|
return require 'data/Calculation/LookupRef/INDEX.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\LookupRef;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\LookupRef;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class LookupTest extends TestCase
|
||||||
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerLOOKUP
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testLOOKUP($expectedResult, ...$args)
|
||||||
|
{
|
||||||
|
$result = LookupRef::LOOKUP(...$args);
|
||||||
|
$this->assertEquals($expectedResult, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerLOOKUP()
|
||||||
|
{
|
||||||
|
return require 'data/Calculation/LookupRef/LOOKUP.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\LookupRef;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\LookupRef;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class MatchTest extends TestCase
|
||||||
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerMATCH
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testMATCH($expectedResult, ...$args)
|
||||||
|
{
|
||||||
|
$result = LookupRef::MATCH(...$args);
|
||||||
|
$this->assertEquals($expectedResult, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerMATCH()
|
||||||
|
{
|
||||||
|
return require 'data/Calculation/LookupRef/MATCH.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\LookupRef;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\LookupRef;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class RowsTest extends TestCase
|
||||||
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerROWS
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testROWS($expectedResult, ...$args)
|
||||||
|
{
|
||||||
|
$result = LookupRef::ROWS(...$args);
|
||||||
|
$this->assertEquals($expectedResult, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerROWS()
|
||||||
|
{
|
||||||
|
return require 'data/Calculation/LookupRef/ROWS.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\LookupRef;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\LookupRef;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class VLookupTest extends TestCase
|
||||||
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerVLOOKUP
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testVLOOKUP($expectedResult, ...$args)
|
||||||
|
{
|
||||||
|
$result = LookupRef::VLOOKUP(...$args);
|
||||||
|
$this->assertEquals($expectedResult, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerVLOOKUP()
|
||||||
|
{
|
||||||
|
return require 'data/Calculation/LookupRef/VLOOKUP.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -19,118 +19,6 @@ class LookupRefTest extends TestCase
|
||||||
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @dataProvider providerHLOOKUP
|
|
||||||
*
|
|
||||||
* @param mixed $expectedResult
|
|
||||||
*/
|
|
||||||
public function testHLOOKUP($expectedResult, ...$args)
|
|
||||||
{
|
|
||||||
$result = LookupRef::HLOOKUP(...$args);
|
|
||||||
self::assertEquals($expectedResult, $result);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function providerHLOOKUP()
|
|
||||||
{
|
|
||||||
return require 'data/Calculation/LookupRef/HLOOKUP.php';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dataProvider providerVLOOKUP
|
|
||||||
*
|
|
||||||
* @param mixed $expectedResult
|
|
||||||
*/
|
|
||||||
public function testVLOOKUP($expectedResult, ...$args)
|
|
||||||
{
|
|
||||||
$result = LookupRef::VLOOKUP(...$args);
|
|
||||||
self::assertEquals($expectedResult, $result);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function providerVLOOKUP()
|
|
||||||
{
|
|
||||||
return require 'data/Calculation/LookupRef/VLOOKUP.php';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dataProvider providerLOOKUP
|
|
||||||
*
|
|
||||||
* @param mixed $expectedResult
|
|
||||||
*/
|
|
||||||
public function testLOOKUP($expectedResult, ...$args)
|
|
||||||
{
|
|
||||||
$result = LookupRef::LOOKUP(...$args);
|
|
||||||
self::assertEquals($expectedResult, $result);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function providerLOOKUP()
|
|
||||||
{
|
|
||||||
return require 'data/Calculation/LookupRef/LOOKUP.php';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dataProvider providerMATCH
|
|
||||||
*
|
|
||||||
* @param mixed $expectedResult
|
|
||||||
*/
|
|
||||||
public function testMATCH($expectedResult, ...$args)
|
|
||||||
{
|
|
||||||
$result = LookupRef::MATCH(...$args);
|
|
||||||
self::assertEquals($expectedResult, $result);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function providerMATCH()
|
|
||||||
{
|
|
||||||
return require 'data/Calculation/LookupRef/MATCH.php';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dataProvider providerINDEX
|
|
||||||
*
|
|
||||||
* @param mixed $expectedResult
|
|
||||||
*/
|
|
||||||
public function testINDEX($expectedResult, ...$args)
|
|
||||||
{
|
|
||||||
$result = LookupRef::INDEX(...$args);
|
|
||||||
self::assertEquals($expectedResult, $result);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function providerINDEX()
|
|
||||||
{
|
|
||||||
return require 'data/Calculation/LookupRef/INDEX.php';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dataProvider providerCOLUMNS
|
|
||||||
*
|
|
||||||
* @param mixed $expectedResult
|
|
||||||
*/
|
|
||||||
public function testCOLUMNS($expectedResult, ...$args)
|
|
||||||
{
|
|
||||||
$result = LookupRef::COLUMNS(...$args);
|
|
||||||
self::assertEquals($expectedResult, $result);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function providerCOLUMNS()
|
|
||||||
{
|
|
||||||
return require 'data/Calculation/LookupRef/COLUMNS.php';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dataProvider providerROWS
|
|
||||||
*
|
|
||||||
* @param mixed $expectedResult
|
|
||||||
*/
|
|
||||||
public function testROWS($expectedResult, ...$args)
|
|
||||||
{
|
|
||||||
$result = LookupRef::ROWS(...$args);
|
|
||||||
self::assertEquals($expectedResult, $result);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function providerROWS()
|
|
||||||
{
|
|
||||||
return require 'data/Calculation/LookupRef/ROWS.php';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider providerFormulaText
|
* @dataProvider providerFormulaText
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,52 +1,43 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
// Year, Month, Day, Result, Comments
|
|
||||||
|
|
||||||
return [
|
return [
|
||||||
[
|
'Year without century specified' => [
|
||||||
6890,
|
6890, // '11th November 1918'
|
||||||
18, 11, 11,
|
18, 11, 11,
|
||||||
],
|
],
|
||||||
// Excel 1900 Calendar Base Date
|
'Excel 1900 Calendar Base Date' => [
|
||||||
[
|
|
||||||
1,
|
1,
|
||||||
1900, 1, 1,
|
1900, 1, 1,
|
||||||
],
|
],
|
||||||
// Day before Excel mythical 1900 leap day
|
'Day before Excel mythical 1900 leap day' => [
|
||||||
[
|
|
||||||
59,
|
59,
|
||||||
1900, 2, 28,
|
1900, 2, 28,
|
||||||
],
|
],
|
||||||
// Excel mythical 1900 leap day
|
'Excel mythical 1900 leap day' => [
|
||||||
[
|
|
||||||
60,
|
60,
|
||||||
1900, 2, 29,
|
1900, 2, 29,
|
||||||
],
|
],
|
||||||
[
|
'Day after Excel mythical 1900 leap day' => [
|
||||||
// Day after Excel mythical 1900 leap day
|
|
||||||
61,
|
61,
|
||||||
1900, 3, 1,
|
1900, 3, 1,
|
||||||
],
|
],
|
||||||
// Day after Excel actual 1904 leap day
|
'Day after Excel actual 1904 leap day' => [
|
||||||
[
|
|
||||||
713,
|
713,
|
||||||
1901, 12, 13,
|
1901, 12, 13,
|
||||||
],
|
],
|
||||||
// PHP 32-bit Earliest Date (unix timestamp)
|
'signed 32-bit Unix Timestamp Earliest Date' => [
|
||||||
[
|
|
||||||
714,
|
714,
|
||||||
1901, 12, 14,
|
1901, 12, 14,
|
||||||
],
|
],
|
||||||
[
|
'Day before Excel 1904 Calendar Base Date' => [
|
||||||
1461,
|
1461,
|
||||||
1903, 12, 31,
|
1903, 12, 31,
|
||||||
],
|
],
|
||||||
// Excel 1904 Calendar Base Date
|
'Excel 1904 Calendar Base Date' => [
|
||||||
[
|
|
||||||
1462,
|
1462,
|
||||||
1904, 1, 1,
|
1904, 1, 1,
|
||||||
],
|
],
|
||||||
[
|
'Day after Excel 1904 Calendar Base Date' => [
|
||||||
1463,
|
1463,
|
||||||
1904, 1, 2,
|
1904, 1, 2,
|
||||||
],
|
],
|
||||||
|
@ -54,8 +45,7 @@ return [
|
||||||
22269,
|
22269,
|
||||||
1960, 12, 19,
|
1960, 12, 19,
|
||||||
],
|
],
|
||||||
// PHP (unix timestamp) Base Date
|
'Unix Timestamp Base Date' => [
|
||||||
[
|
|
||||||
25569,
|
25569,
|
||||||
1970, 1, 1,
|
1970, 1, 1,
|
||||||
],
|
],
|
||||||
|
@ -67,13 +57,11 @@ return [
|
||||||
39611,
|
39611,
|
||||||
2008, 6, 12,
|
2008, 6, 12,
|
||||||
],
|
],
|
||||||
// PHP (unix timestamp) 32-bit Latest Date
|
'32-bit signed Unix Timestamp Latest Date' => [
|
||||||
[
|
|
||||||
50424,
|
50424,
|
||||||
2038, 1, 19,
|
2038, 1, 19,
|
||||||
],
|
],
|
||||||
// Day after PHP (unix timestamp) 32-bit Latest Date
|
'Day after 32-bit signed Unix Timestamp Latest Date' => [
|
||||||
[
|
|
||||||
50425,
|
50425,
|
||||||
2038, 1, 20,
|
2038, 1, 20,
|
||||||
],
|
],
|
||||||
|
@ -245,13 +233,11 @@ return [
|
||||||
'#NUM!',
|
'#NUM!',
|
||||||
-20, 6, 15,
|
-20, 6, 15,
|
||||||
],
|
],
|
||||||
// Excel Maximum Date
|
'Excel Maximum Date' => [
|
||||||
[
|
|
||||||
2958465,
|
2958465,
|
||||||
9999, 12, 31,
|
9999, 12, 31,
|
||||||
],
|
],
|
||||||
// Exceeded Excel Maximum Date
|
'Exceeded Excel Maximum Date' => [
|
||||||
[
|
|
||||||
'#NUM!',
|
'#NUM!',
|
||||||
10000, 1, 1,
|
10000, 1, 1,
|
||||||
],
|
],
|
||||||
|
@ -329,5 +315,5 @@ return [
|
||||||
[
|
[
|
||||||
'#VALUE!',
|
'#VALUE!',
|
||||||
2010, 3, 'GHI',
|
2010, 3, 'GHI',
|
||||||
],
|
]
|
||||||
];
|
];
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
"brown",
|
||||||
|
4, "red", "blue", "green", "brown",
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"blue",
|
||||||
|
2, "red", "blue", "green", "brown",
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"green",
|
||||||
|
3, "red", "blue", "green", "brown",
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"red",
|
||||||
|
1, "red", "blue", "green", "brown",
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"#VALUE!",
|
||||||
|
5, "red", "blue", "green", "brown",
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"#VALUE!",
|
||||||
|
0, "red", "blue", "green", "brown",
|
||||||
|
],
|
||||||
|
];
|
|
@ -102,147 +102,147 @@ return [
|
||||||
3,
|
3,
|
||||||
'x',
|
'x',
|
||||||
[[0], [0], ['x'], ['x'], ['x']],
|
[[0], [0], ['x'], ['x'], ['x']],
|
||||||
0
|
0,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
2,
|
2,
|
||||||
'a',
|
'a',
|
||||||
[false, 'a',1],
|
[false, 'a', 1],
|
||||||
-1
|
-1,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'#N/A', // Expected
|
'#N/A', // Expected
|
||||||
0,
|
0,
|
||||||
['x', true, false],
|
['x', true, false],
|
||||||
-1
|
-1,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'#N/A', // Expected
|
'#N/A', // Expected
|
||||||
true,
|
true,
|
||||||
['a', 'b', 'c'],
|
['a', 'b', 'c'],
|
||||||
-1
|
-1,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'#N/A', // Expected
|
'#N/A', // Expected
|
||||||
true,
|
true,
|
||||||
[0,1,2],
|
[0, 1, 2],
|
||||||
-1
|
-1,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'#N/A', // Expected
|
'#N/A', // Expected
|
||||||
true,
|
true,
|
||||||
[0,1,2],
|
[0, 1, 2],
|
||||||
0
|
0,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'#N/A', // Expected
|
'#N/A', // Expected
|
||||||
true,
|
true,
|
||||||
[0,1,2],
|
[0, 1, 2],
|
||||||
1
|
1,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1, // Expected
|
1, // Expected
|
||||||
true,
|
true,
|
||||||
[true,true,true],
|
[true, true, true],
|
||||||
-1
|
-1,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1, // Expected
|
1, // Expected
|
||||||
true,
|
true,
|
||||||
[true,true,true],
|
[true, true, true],
|
||||||
0
|
0,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
3, // Expected
|
3, // Expected
|
||||||
true,
|
true,
|
||||||
[true,true,true],
|
[true, true, true],
|
||||||
1
|
1,
|
||||||
],
|
],
|
||||||
// lookup stops when value < searched one
|
// lookup stops when value < searched one
|
||||||
[
|
[
|
||||||
5, // Expected
|
5, // Expected
|
||||||
6,
|
6,
|
||||||
[true, false, 'a', 'z', 222222, 2, 99999999],
|
[true, false, 'a', 'z', 222222, 2, 99999999],
|
||||||
-1
|
-1,
|
||||||
],
|
],
|
||||||
// if element of same data type met and it is < than searched one #N/A - no further processing
|
// if element of same data type met and it is < than searched one #N/A - no further processing
|
||||||
[
|
[
|
||||||
'#N/A', // Expected
|
'#N/A', // Expected
|
||||||
6,
|
6,
|
||||||
[true, false, 'a', 'z', 2, 888 ],
|
[true, false, 'a', 'z', 2, 888],
|
||||||
-1
|
-1,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'#N/A', // Expected
|
'#N/A', // Expected
|
||||||
6,
|
6,
|
||||||
['6'],
|
['6'],
|
||||||
-1
|
-1,
|
||||||
],
|
],
|
||||||
// expression match
|
// expression match
|
||||||
[
|
[
|
||||||
2, // Expected
|
2, // Expected
|
||||||
'a?b',
|
'a?b',
|
||||||
['a', 'abb', 'axc'],
|
['a', 'abb', 'axc'],
|
||||||
0
|
0,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1, // Expected
|
1, // Expected
|
||||||
'a*',
|
'a*',
|
||||||
['aAAAAAAA', 'as', 'az'],
|
['aAAAAAAA', 'as', 'az'],
|
||||||
0
|
0,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
3, // Expected
|
3, // Expected
|
||||||
'1*11*1',
|
'1*11*1',
|
||||||
['abc', 'efh', '1a11b1'],
|
['abc', 'efh', '1a11b1'],
|
||||||
0
|
0,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
3, // Expected
|
3, // Expected
|
||||||
'1*11*1',
|
'1*11*1',
|
||||||
['abc', 'efh', '1a11b1'],
|
['abc', 'efh', '1a11b1'],
|
||||||
0
|
0,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
2, // Expected
|
2, // Expected
|
||||||
'a*~*c',
|
'a*~*c',
|
||||||
['aAAAAA', 'a123456*c', 'az'],
|
['aAAAAA', 'a123456*c', 'az'],
|
||||||
0
|
0,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
3, // Expected
|
3, // Expected
|
||||||
'a*123*b',
|
'a*123*b',
|
||||||
['aAAAAA', 'a123456*c', 'a99999123b'],
|
['aAAAAA', 'a123456*c', 'a99999123b'],
|
||||||
0
|
0,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1, // Expected
|
1, // Expected
|
||||||
'*',
|
'*',
|
||||||
['aAAAAA', 'a111123456*c', 'qq'],
|
['aAAAAA', 'a111123456*c', 'qq'],
|
||||||
0
|
0,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
2, // Expected
|
2, // Expected
|
||||||
'?',
|
'?',
|
||||||
['aAAAAA', 'a', 'a99999123b'],
|
['aAAAAA', 'a', 'a99999123b'],
|
||||||
0
|
0,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'#N/A', // Expected
|
'#N/A', // Expected
|
||||||
'?',
|
'?',
|
||||||
[1, 22,333],
|
[1, 22, 333],
|
||||||
0
|
0,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
3, // Expected
|
3, // Expected
|
||||||
'???',
|
'???',
|
||||||
[1, 22,'aaa'],
|
[1, 22, 'aaa'],
|
||||||
0
|
0,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
3, // Expected
|
3, // Expected
|
||||||
'*',
|
'*',
|
||||||
[1, 22,'aaa'],
|
[1, 22, 'aaa'],
|
||||||
0
|
0,
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
Loading…
Reference in New Issue