Updates to 3rd party libraries

Add Dockerfile and specific docker-php.ini
This commit is contained in:
2018-08-28 21:27:13 -04:00
parent 9edd6c1c35
commit d52454d1bb
511 changed files with 45960 additions and 2739 deletions

View File

@ -0,0 +1,120 @@
<?php
namespace PhpOffice\PhpSpreadsheetTests\Calculation;
use PhpOffice\PhpSpreadsheet\Calculation\Calculation;
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
use PHPUnit\Framework\TestCase;
class CalculationTest extends TestCase
{
public function setUp()
{
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
}
public function tearDown()
{
$calculation = Calculation::getInstance();
$calculation->setLocale('en_us');
}
/**
* @dataProvider providerBinaryComparisonOperation
*
* @param mixed $formula
* @param mixed $expectedResultExcel
* @param mixed $expectedResultOpenOffice
*/
public function testBinaryComparisonOperation($formula, $expectedResultExcel, $expectedResultOpenOffice)
{
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
$resultExcel = Calculation::getInstance()->_calculateFormulaValue($formula);
self::assertEquals($expectedResultExcel, $resultExcel, 'should be Excel compatible');
Functions::setCompatibilityMode(Functions::COMPATIBILITY_OPENOFFICE);
$resultOpenOffice = Calculation::getInstance()->_calculateFormulaValue($formula);
self::assertEquals($expectedResultOpenOffice, $resultOpenOffice, 'should be OpenOffice compatible');
}
public function providerBinaryComparisonOperation()
{
return require 'data/CalculationBinaryComparisonOperation.php';
}
/**
* @dataProvider providerGetFunctions
*
* @param string $category
* @param array|string $functionCall
* @param string $argumentCount
*/
public function testGetFunctions($category, $functionCall, $argumentCount)
{
self::assertInternalType('callable', $functionCall);
}
public function providerGetFunctions()
{
return Calculation::getInstance()->getFunctions();
}
public function testIsImplemented()
{
$calculation = Calculation::getInstance();
self::assertFalse($calculation->isImplemented('non-existing-function'));
self::assertFalse($calculation->isImplemented('AREAS'));
self::assertTrue($calculation->isImplemented('coUNt'));
self::assertTrue($calculation->isImplemented('abs'));
}
/**
* @dataProvider providerCanLoadAllSupportedLocales
*
* @param string $locale
*/
public function testCanLoadAllSupportedLocales($locale)
{
$calculation = Calculation::getInstance();
self::assertTrue($calculation->setLocale($locale));
}
public function providerCanLoadAllSupportedLocales()
{
return [
['bg'],
['cs'],
['da'],
['de'],
['en_us'],
['es'],
['fi'],
['fr'],
['hu'],
['it'],
['nl'],
['no'],
['pl'],
['pt'],
['pt_br'],
['ru'],
['sv'],
['tr'],
];
}
public function testDoesHandleXlfnFunctions()
{
$calculation = Calculation::getInstance();
$tree = $calculation->parseFormula('=_xlfn.ISFORMULA(A1)');
self::assertCount(3, $tree);
$function = $tree[2];
self::assertEquals('Function', $function['type']);
$tree = $calculation->parseFormula('=_xlfn.STDEV.S(A1:B2)');
self::assertCount(5, $tree);
$function = $tree[4];
self::assertEquals('Function', $function['type']);
}
}

View File

@ -0,0 +1,487 @@
<?php
namespace PhpOffice\PhpSpreadsheetTests\Calculation;
use PhpOffice\PhpSpreadsheet\Calculation\DateTime;
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
use PhpOffice\PhpSpreadsheet\Shared\Date;
use PHPUnit\Framework\TestCase;
/**
* Class DateTimeTest.
*/
class DateTimeTest extends TestCase
{
public function setUp()
{
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
}
/**
* @dataProvider providerDATE
*
* @param mixed $expectedResult
*/
public function testDATE($expectedResult, ...$args)
{
$result = DateTime::DATE(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerDATE()
{
return require 'data/Calculation/DateTime/DATE.php';
}
public function testDATEtoPHP()
{
Functions::setReturnDateType(Functions::RETURNDATE_PHP_NUMERIC);
$result = DateTime::DATE(2012, 1, 31);
Functions::setReturnDateType(Functions::RETURNDATE_EXCEL);
self::assertEquals(1327968000, $result, null, 1E-8);
}
public function testDATEtoPHPObject()
{
Functions::setReturnDateType(Functions::RETURNDATE_PHP_OBJECT);
$result = DateTime::DATE(2012, 1, 31);
Functions::setReturnDateType(Functions::RETURNDATE_EXCEL);
// Must return an object...
self::assertInternalType('object', $result);
// ... of the correct type
self::assertTrue(is_a($result, 'DateTime'));
// ... with the correct value
self::assertEquals($result->format('d-M-Y'), '31-Jan-2012');
}
public function testDATEwith1904Calendar()
{
Date::setExcelCalendar(Date::CALENDAR_MAC_1904);
$result = DateTime::DATE(1918, 11, 11);
Date::setExcelCalendar(Date::CALENDAR_WINDOWS_1900);
self::assertEquals($result, 5428);
}
public function testDATEwith1904CalendarError()
{
Date::setExcelCalendar(Date::CALENDAR_MAC_1904);
$result = DateTime::DATE(1901, 1, 31);
Date::setExcelCalendar(Date::CALENDAR_WINDOWS_1900);
self::assertEquals($result, '#NUM!');
}
/**
* @dataProvider providerDATEVALUE
*
* @param mixed $expectedResult
*/
public function testDATEVALUE($expectedResult, ...$args)
{
$result = DateTime::DATEVALUE(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerDATEVALUE()
{
return require 'data/Calculation/DateTime/DATEVALUE.php';
}
public function testDATEVALUEtoPHP()
{
Functions::setReturnDateType(Functions::RETURNDATE_PHP_NUMERIC);
$result = DateTime::DATEVALUE('2012-1-31');
Functions::setReturnDateType(Functions::RETURNDATE_EXCEL);
self::assertEquals(1327968000, $result, null, 1E-8);
}
public function testDATEVALUEtoPHPObject()
{
Functions::setReturnDateType(Functions::RETURNDATE_PHP_OBJECT);
$result = DateTime::DATEVALUE('2012-1-31');
Functions::setReturnDateType(Functions::RETURNDATE_EXCEL);
// Must return an object...
self::assertInternalType('object', $result);
// ... of the correct type
self::assertTrue(is_a($result, 'DateTime'));
// ... with the correct value
self::assertEquals($result->format('d-M-Y'), '31-Jan-2012');
}
/**
* @dataProvider providerYEAR
*
* @param mixed $expectedResult
*/
public function testYEAR($expectedResult, ...$args)
{
$result = DateTime::YEAR(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerYEAR()
{
return require 'data/Calculation/DateTime/YEAR.php';
}
/**
* @dataProvider providerMONTH
*
* @param mixed $expectedResult
*/
public function testMONTH($expectedResult, ...$args)
{
$result = DateTime::MONTHOFYEAR(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerMONTH()
{
return require 'data/Calculation/DateTime/MONTH.php';
}
/**
* @dataProvider providerWEEKNUM
*
* @param mixed $expectedResult
*/
public function testWEEKNUM($expectedResult, ...$args)
{
$result = DateTime::WEEKNUM(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerWEEKNUM()
{
return require 'data/Calculation/DateTime/WEEKNUM.php';
}
/**
* @dataProvider providerISOWEEKNUM
*
* @param mixed $expectedResult
* @param mixed $dateValue
*/
public function testISOWEEKNUM($expectedResult, $dateValue)
{
$result = DateTime::ISOWEEKNUM($dateValue);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerISOWEEKNUM()
{
return require 'data/Calculation/DateTime/ISOWEEKNUM.php';
}
/**
* @dataProvider providerWEEKDAY
*
* @param mixed $expectedResult
*/
public function testWEEKDAY($expectedResult, ...$args)
{
$result = DateTime::WEEKDAY(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerWEEKDAY()
{
return require 'data/Calculation/DateTime/WEEKDAY.php';
}
/**
* @dataProvider providerDAY
*
* @param mixed $expectedResultExcel
* @param mixed $expectedResultOpenOffice
*/
public function testDAY($expectedResultExcel, $expectedResultOpenOffice, ...$args)
{
$resultExcel = DateTime::DAYOFMONTH(...$args);
self::assertEquals($expectedResultExcel, $resultExcel, null, 1E-8);
Functions::setCompatibilityMode(Functions::COMPATIBILITY_OPENOFFICE);
$resultOpenOffice = DateTime::DAYOFMONTH(...$args);
self::assertEquals($expectedResultOpenOffice, $resultOpenOffice, null, 1E-8);
}
public function providerDAY()
{
return require 'data/Calculation/DateTime/DAY.php';
}
/**
* @dataProvider providerTIME
*
* @param mixed $expectedResult
*/
public function testTIME($expectedResult, ...$args)
{
$result = DateTime::TIME(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerTIME()
{
return require 'data/Calculation/DateTime/TIME.php';
}
public function testTIMEtoPHP()
{
Functions::setReturnDateType(Functions::RETURNDATE_PHP_NUMERIC);
$result = DateTime::TIME(7, 30, 20);
Functions::setReturnDateType(Functions::RETURNDATE_EXCEL);
self::assertEquals(27020, $result, null, 1E-8);
}
public function testTIMEtoPHPObject()
{
Functions::setReturnDateType(Functions::RETURNDATE_PHP_OBJECT);
$result = DateTime::TIME(7, 30, 20);
Functions::setReturnDateType(Functions::RETURNDATE_EXCEL);
// Must return an object...
self::assertInternalType('object', $result);
// ... of the correct type
self::assertTrue(is_a($result, 'DateTime'));
// ... with the correct value
self::assertEquals($result->format('H:i:s'), '07:30:20');
}
/**
* @dataProvider providerTIMEVALUE
*
* @param mixed $expectedResult
*/
public function testTIMEVALUE($expectedResult, ...$args)
{
$result = DateTime::TIMEVALUE(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerTIMEVALUE()
{
return require 'data/Calculation/DateTime/TIMEVALUE.php';
}
public function testTIMEVALUEtoPHP()
{
Functions::setReturnDateType(Functions::RETURNDATE_PHP_NUMERIC);
$result = DateTime::TIMEVALUE('7:30:20');
Functions::setReturnDateType(Functions::RETURNDATE_EXCEL);
self::assertEquals(23420, $result, null, 1E-8);
}
public function testTIMEVALUEtoPHPObject()
{
Functions::setReturnDateType(Functions::RETURNDATE_PHP_OBJECT);
$result = DateTime::TIMEVALUE('7:30:20');
Functions::setReturnDateType(Functions::RETURNDATE_EXCEL);
// Must return an object...
self::assertInternalType('object', $result);
// ... of the correct type
self::assertTrue(is_a($result, 'DateTime'));
// ... with the correct value
self::assertEquals($result->format('H:i:s'), '07:30:20');
}
/**
* @dataProvider providerHOUR
*
* @param mixed $expectedResult
*/
public function testHOUR($expectedResult, ...$args)
{
$result = DateTime::HOUROFDAY(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerHOUR()
{
return require 'data/Calculation/DateTime/HOUR.php';
}
/**
* @dataProvider providerMINUTE
*
* @param mixed $expectedResult
*/
public function testMINUTE($expectedResult, ...$args)
{
$result = DateTime::MINUTE(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerMINUTE()
{
return require 'data/Calculation/DateTime/MINUTE.php';
}
/**
* @dataProvider providerSECOND
*
* @param mixed $expectedResult
*/
public function testSECOND($expectedResult, ...$args)
{
$result = DateTime::SECOND(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerSECOND()
{
return require 'data/Calculation/DateTime/SECOND.php';
}
/**
* @dataProvider providerNETWORKDAYS
*
* @param mixed $expectedResult
*/
public function testNETWORKDAYS($expectedResult, ...$args)
{
$result = DateTime::NETWORKDAYS(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerNETWORKDAYS()
{
return require 'data/Calculation/DateTime/NETWORKDAYS.php';
}
/**
* @dataProvider providerWORKDAY
*
* @param mixed $expectedResult
*/
public function testWORKDAY($expectedResult, ...$args)
{
$result = DateTime::WORKDAY(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerWORKDAY()
{
return require 'data/Calculation/DateTime/WORKDAY.php';
}
/**
* @dataProvider providerEDATE
*
* @param mixed $expectedResult
*/
public function testEDATE($expectedResult, ...$args)
{
$result = DateTime::EDATE(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerEDATE()
{
return require 'data/Calculation/DateTime/EDATE.php';
}
public function testEDATEtoPHP()
{
Functions::setReturnDateType(Functions::RETURNDATE_PHP_NUMERIC);
$result = DateTime::EDATE('2012-1-26', -1);
Functions::setReturnDateType(Functions::RETURNDATE_EXCEL);
self::assertEquals(1324857600, $result, null, 1E-8);
}
public function testEDATEtoPHPObject()
{
Functions::setReturnDateType(Functions::RETURNDATE_PHP_OBJECT);
$result = DateTime::EDATE('2012-1-26', -1);
Functions::setReturnDateType(Functions::RETURNDATE_EXCEL);
// Must return an object...
self::assertInternalType('object', $result);
// ... of the correct type
self::assertTrue(is_a($result, 'DateTime'));
// ... with the correct value
self::assertEquals($result->format('d-M-Y'), '26-Dec-2011');
}
/**
* @dataProvider providerEOMONTH
*
* @param mixed $expectedResult
*/
public function testEOMONTH($expectedResult, ...$args)
{
$result = DateTime::EOMONTH(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerEOMONTH()
{
return require 'data/Calculation/DateTime/EOMONTH.php';
}
public function testEOMONTHtoPHP()
{
Functions::setReturnDateType(Functions::RETURNDATE_PHP_NUMERIC);
$result = DateTime::EOMONTH('2012-1-26', -1);
Functions::setReturnDateType(Functions::RETURNDATE_EXCEL);
self::assertEquals(1325289600, $result, null, 1E-8);
}
public function testEOMONTHtoPHPObject()
{
Functions::setReturnDateType(Functions::RETURNDATE_PHP_OBJECT);
$result = DateTime::EOMONTH('2012-1-26', -1);
Functions::setReturnDateType(Functions::RETURNDATE_EXCEL);
// Must return an object...
self::assertInternalType('object', $result);
// ... of the correct type
self::assertTrue(is_a($result, 'DateTime'));
// ... with the correct value
self::assertEquals($result->format('d-M-Y'), '31-Dec-2011');
}
/**
* @dataProvider providerDATEDIF
*
* @param mixed $expectedResult
*/
public function testDATEDIF($expectedResult, ...$args)
{
$result = DateTime::DATEDIF(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerDATEDIF()
{
return require 'data/Calculation/DateTime/DATEDIF.php';
}
/**
* @dataProvider providerDAYS360
*
* @param mixed $expectedResult
*/
public function testDAYS360($expectedResult, ...$args)
{
$result = DateTime::DAYS360(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerDAYS360()
{
return require 'data/Calculation/DateTime/DAYS360.php';
}
/**
* @dataProvider providerYEARFRAC
*
* @param mixed $expectedResult
*/
public function testYEARFRAC($expectedResult, ...$args)
{
$result = DateTime::YEARFRAC(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerYEARFRAC()
{
return require 'data/Calculation/DateTime/YEARFRAC.php';
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,613 @@
<?php
namespace PhpOffice\PhpSpreadsheetTests\Calculation;
use PhpOffice\PhpSpreadsheet\Calculation\Financial;
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
use PHPUnit\Framework\TestCase;
class FinancialTest extends TestCase
{
public function setUp()
{
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
}
/**
* @dataProvider providerACCRINT
*
* @param mixed $expectedResult
*/
public function testACCRINT($expectedResult, ...$args)
{
$result = Financial::ACCRINT(...$args);
self::assertEquals($expectedResult, $result, null, 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, null, 1E-8);
}
public function providerACCRINTM()
{
return require 'data/Calculation/Financial/ACCRINTM.php';
}
/**
* @dataProvider providerAMORDEGRC
*
* @param mixed $expectedResult
*/
public function testAMORDEGRC($expectedResult, ...$args)
{
$result = Financial::AMORDEGRC(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerAMORDEGRC()
{
return require 'data/Calculation/Financial/AMORDEGRC.php';
}
/**
* @dataProvider providerAMORLINC
*
* @param mixed $expectedResult
*/
public function testAMORLINC($expectedResult, ...$args)
{
$result = Financial::AMORLINC(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerAMORLINC()
{
return require 'data/Calculation/Financial/AMORLINC.php';
}
/**
* @dataProvider providerCOUPDAYBS
*
* @param mixed $expectedResult
*/
public function testCOUPDAYBS($expectedResult, ...$args)
{
$result = Financial::COUPDAYBS(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerCOUPDAYBS()
{
return require 'data/Calculation/Financial/COUPDAYBS.php';
}
/**
* @dataProvider providerCOUPDAYS
*
* @param mixed $expectedResult
*/
public function testCOUPDAYS($expectedResult, ...$args)
{
$result = Financial::COUPDAYS(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerCOUPDAYS()
{
return require 'data/Calculation/Financial/COUPDAYS.php';
}
/**
* @dataProvider providerCOUPDAYSNC
*
* @param mixed $expectedResult
*/
public function testCOUPDAYSNC($expectedResult, ...$args)
{
$result = Financial::COUPDAYSNC(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerCOUPDAYSNC()
{
return require 'data/Calculation/Financial/COUPDAYSNC.php';
}
/**
* @dataProvider providerCOUPNCD
*
* @param mixed $expectedResult
*/
public function testCOUPNCD($expectedResult, ...$args)
{
$result = Financial::COUPNCD(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerCOUPNCD()
{
return require 'data/Calculation/Financial/COUPNCD.php';
}
/**
* @dataProvider providerCOUPNUM
*
* @param mixed $expectedResult
*/
public function testCOUPNUM($expectedResult, ...$args)
{
$result = Financial::COUPNUM(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerCOUPNUM()
{
return require 'data/Calculation/Financial/COUPNUM.php';
}
/**
* @dataProvider providerCOUPPCD
*
* @param mixed $expectedResult
*/
public function testCOUPPCD($expectedResult, ...$args)
{
$result = Financial::COUPPCD(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerCOUPPCD()
{
return require 'data/Calculation/Financial/COUPPCD.php';
}
/**
* @dataProvider providerCUMIPMT
*
* @param mixed $expectedResult
*/
public function testCUMIPMT($expectedResult, ...$args)
{
$result = Financial::CUMIPMT(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerCUMIPMT()
{
return require 'data/Calculation/Financial/CUMIPMT.php';
}
/**
* @dataProvider providerCUMPRINC
*
* @param mixed $expectedResult
*/
public function testCUMPRINC($expectedResult, ...$args)
{
$result = Financial::CUMPRINC(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerCUMPRINC()
{
return require 'data/Calculation/Financial/CUMPRINC.php';
}
/**
* @dataProvider providerDB
*
* @param mixed $expectedResult
*/
public function testDB($expectedResult, ...$args)
{
$result = Financial::DB(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerDB()
{
return require 'data/Calculation/Financial/DB.php';
}
/**
* @dataProvider providerDDB
*
* @param mixed $expectedResult
*/
public function testDDB($expectedResult, ...$args)
{
$result = Financial::DDB(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerDDB()
{
return require 'data/Calculation/Financial/DDB.php';
}
/**
* @dataProvider providerDISC
*
* @param mixed $expectedResult
*/
public function testDISC($expectedResult, ...$args)
{
$result = Financial::DISC(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerDISC()
{
return require 'data/Calculation/Financial/DISC.php';
}
/**
* @dataProvider providerDOLLARDE
*
* @param mixed $expectedResult
*/
public function testDOLLARDE($expectedResult, ...$args)
{
$result = Financial::DOLLARDE(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerDOLLARDE()
{
return require 'data/Calculation/Financial/DOLLARDE.php';
}
/**
* @dataProvider providerDOLLARFR
*
* @param mixed $expectedResult
*/
public function testDOLLARFR($expectedResult, ...$args)
{
$result = Financial::DOLLARFR(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerDOLLARFR()
{
return require 'data/Calculation/Financial/DOLLARFR.php';
}
/**
* @dataProvider providerEFFECT
*
* @param mixed $expectedResult
*/
public function testEFFECT($expectedResult, ...$args)
{
$result = Financial::EFFECT(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerEFFECT()
{
return require 'data/Calculation/Financial/EFFECT.php';
}
/**
* @dataProvider providerFV
*
* @param mixed $expectedResult
*/
public function testFV($expectedResult, ...$args)
{
$result = Financial::FV(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerFV()
{
return require 'data/Calculation/Financial/FV.php';
}
/**
* @dataProvider providerFVSCHEDULE
*
* @param mixed $expectedResult
*/
public function testFVSCHEDULE($expectedResult, ...$args)
{
$result = Financial::FVSCHEDULE(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerFVSCHEDULE()
{
return require 'data/Calculation/Financial/FVSCHEDULE.php';
}
/**
* @dataProvider providerINTRATE
*
* @param mixed $expectedResult
*/
public function testINTRATE($expectedResult, ...$args)
{
$result = Financial::INTRATE(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerINTRATE()
{
return require 'data/Calculation/Financial/INTRATE.php';
}
/**
* @dataProvider providerIPMT
*
* @param mixed $expectedResult
*/
public function testIPMT($expectedResult, ...$args)
{
$result = Financial::IPMT(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerIPMT()
{
return require 'data/Calculation/Financial/IPMT.php';
}
/**
* @dataProvider providerIRR
*
* @param mixed $expectedResult
*/
public function testIRR($expectedResult, ...$args)
{
$result = Financial::IRR(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerIRR()
{
return require 'data/Calculation/Financial/IRR.php';
}
/**
* @dataProvider providerISPMT
*
* @param mixed $expectedResult
*/
public function testISPMT($expectedResult, ...$args)
{
$result = Financial::ISPMT(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerISPMT()
{
return require 'data/Calculation/Financial/ISPMT.php';
}
/**
* @dataProvider providerMIRR
*
* @param mixed $expectedResult
*/
public function testMIRR($expectedResult, ...$args)
{
$result = Financial::MIRR(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerMIRR()
{
return require 'data/Calculation/Financial/MIRR.php';
}
/**
* @dataProvider providerNOMINAL
*
* @param mixed $expectedResult
*/
public function testNOMINAL($expectedResult, ...$args)
{
$result = Financial::NOMINAL(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerNOMINAL()
{
return require 'data/Calculation/Financial/NOMINAL.php';
}
/**
* @dataProvider providerNPER
*
* @param mixed $expectedResult
*/
public function testNPER($expectedResult, ...$args)
{
$result = Financial::NPER(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerNPER()
{
return require 'data/Calculation/Financial/NPER.php';
}
/**
* @dataProvider providerNPV
*
* @param mixed $expectedResult
*/
public function testNPV($expectedResult, ...$args)
{
$result = Financial::NPV(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerNPV()
{
return require 'data/Calculation/Financial/NPV.php';
}
/**
* @dataProvider providerPRICE
*
* @param mixed $expectedResult
*/
public function testPRICE($expectedResult, ...$args)
{
$this->markTestIncomplete('TODO: This test should be fixed');
$result = Financial::PRICE(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerPRICE()
{
return require 'data/Calculation/Financial/PRICE.php';
}
/**
* @dataProvider providerPRICEDISC
*
* @param mixed $expectedResult
*/
public function testPRICEDISC($expectedResult, array $args)
{
$result = Financial::PRICEDISC(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerPRICEDISC()
{
return require 'data/Calculation/Financial/PRICEDISC.php';
}
/**
* @dataProvider providerPV
*
* @param mixed $expectedResult
*/
public function testPV($expectedResult, array $args)
{
$result = Financial::PV(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerPV()
{
return require 'data/Calculation/Financial/PV.php';
}
/**
* @dataProvider providerRATE
*
* @param mixed $expectedResult
*/
public function testRATE($expectedResult, ...$args)
{
$this->markTestIncomplete('TODO: This test should be fixed');
$result = Financial::RATE(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerRATE()
{
return require 'data/Calculation/Financial/RATE.php';
}
/**
* @dataProvider providerXIRR
*
* @param mixed $expectedResult
*/
public function testXIRR($expectedResult, ...$args)
{
$this->markTestIncomplete('TODO: This test should be fixed');
$result = Financial::XIRR(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerXIRR()
{
return require 'data/Calculation/Financial/XIRR.php';
}
/**
* @dataProvider providerPDURATION
*
* @param mixed $expectedResult
*/
public function testPDURATION($expectedResult, array $args)
{
$result = Financial::PDURATION(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerPDURATION()
{
return require 'data/Calculation/Financial/PDURATION.php';
}
/**
* @dataProvider providerRRI
*
* @param mixed $expectedResult
*/
public function testRRI($expectedResult, array $args)
{
$result = Financial::RRI(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerRRI()
{
return require 'data/Calculation/Financial/RRI.php';
}
/**
* @dataProvider providerSLN
*
* @param mixed $expectedResult
*/
public function testSLN($expectedResult, array $args)
{
$result = Financial::SLN(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerSLN()
{
return require 'data/Calculation/Financial/SLN.php';
}
/**
* @dataProvider providerSYD
*
* @param mixed $expectedResult
*/
public function testSYD($expectedResult, array $args)
{
$result = Financial::SYD(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerSYD()
{
return require 'data/Calculation/Financial/SYD.php';
}
}

View File

@ -0,0 +1,385 @@
<?php
namespace PhpOffice\PhpSpreadsheetTests\Calculation;
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
use PhpOffice\PhpSpreadsheet\Cell\Cell;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
use PHPUnit\Framework\TestCase;
class FunctionsTest extends TestCase
{
public function setUp()
{
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
Functions::setReturnDateType(Functions::RETURNDATE_EXCEL);
}
public function tearDown()
{
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
Functions::setReturnDateType(Functions::RETURNDATE_EXCEL);
}
public function testCompatibilityMode()
{
$result = Functions::setCompatibilityMode(Functions::COMPATIBILITY_GNUMERIC);
// Test for a true response for success
$this->assertTrue($result);
// Test that mode has been changed
$this->assertEquals(Functions::COMPATIBILITY_GNUMERIC, Functions::getCompatibilityMode());
}
public function testInvalidCompatibilityMode()
{
$result = Functions::setCompatibilityMode('INVALIDMODE');
// Test for a false response for failure
$this->assertFalse($result);
// Test that mode has not been changed
$this->assertEquals(Functions::COMPATIBILITY_EXCEL, Functions::getCompatibilityMode());
}
public function testReturnDateType()
{
$result = Functions::setReturnDateType(Functions::RETURNDATE_PHP_OBJECT);
// Test for a true response for success
$this->assertTrue($result);
// Test that mode has been changed
$this->assertEquals(Functions::RETURNDATE_PHP_OBJECT, Functions::getReturnDateType());
}
public function testInvalidReturnDateType()
{
$result = Functions::setReturnDateType('INVALIDTYPE');
// Test for a false response for failure
$this->assertFalse($result);
// Test that mode has not been changed
$this->assertEquals(Functions::RETURNDATE_EXCEL, Functions::getReturnDateType());
}
public function testDUMMY()
{
$result = Functions::DUMMY();
self::assertEquals('#Not Yet Implemented', $result);
}
public function testDIV0()
{
$result = Functions::DIV0();
self::assertEquals('#DIV/0!', $result);
}
public function testNA()
{
$result = Functions::NA();
self::assertEquals('#N/A', $result);
}
public function testNAN()
{
$result = Functions::NAN();
self::assertEquals('#NUM!', $result);
}
public function testNAME()
{
$result = Functions::NAME();
self::assertEquals('#NAME?', $result);
}
public function testREF()
{
$result = Functions::REF();
self::assertEquals('#REF!', $result);
}
public function testNULL()
{
$result = Functions::null();
self::assertEquals('#NULL!', $result);
}
public function testVALUE()
{
$result = Functions::VALUE();
self::assertEquals('#VALUE!', $result);
}
/**
* @dataProvider providerIsBlank
*
* @param mixed $expectedResult
*/
public function testIsBlank($expectedResult, ...$args)
{
$result = Functions::isBlank(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerIsBlank()
{
return require 'data/Calculation/Functions/IS_BLANK.php';
}
/**
* @dataProvider providerIsErr
*
* @param mixed $expectedResult
*/
public function testIsErr($expectedResult, ...$args)
{
$result = Functions::isErr(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerIsErr()
{
return require 'data/Calculation/Functions/IS_ERR.php';
}
/**
* @dataProvider providerIsError
*
* @param mixed $expectedResult
*/
public function testIsError($expectedResult, ...$args)
{
$result = Functions::isError(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerIsError()
{
return require 'data/Calculation/Functions/IS_ERROR.php';
}
/**
* @dataProvider providerErrorType
*
* @param mixed $expectedResult
*/
public function testErrorType($expectedResult, ...$args)
{
$result = Functions::errorType(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerErrorType()
{
return require 'data/Calculation/Functions/ERROR_TYPE.php';
}
/**
* @dataProvider providerIsLogical
*
* @param mixed $expectedResult
*/
public function testIsLogical($expectedResult, ...$args)
{
$result = Functions::isLogical(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerIsLogical()
{
return require 'data/Calculation/Functions/IS_LOGICAL.php';
}
/**
* @dataProvider providerIsNa
*
* @param mixed $expectedResult
*/
public function testIsNa($expectedResult, ...$args)
{
$result = Functions::isNa(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerIsNa()
{
return require 'data/Calculation/Functions/IS_NA.php';
}
/**
* @dataProvider providerIsNumber
*
* @param mixed $expectedResult
*/
public function testIsNumber($expectedResult, ...$args)
{
$result = Functions::isNumber(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerIsNumber()
{
return require 'data/Calculation/Functions/IS_NUMBER.php';
}
/**
* @dataProvider providerIsText
*
* @param mixed $expectedResult
*/
public function testIsText($expectedResult, ...$args)
{
$result = Functions::isText(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerIsText()
{
return require 'data/Calculation/Functions/IS_TEXT.php';
}
/**
* @dataProvider providerIsNonText
*
* @param mixed $expectedResult
*/
public function testIsNonText($expectedResult, ...$args)
{
$result = Functions::isNonText(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerIsNonText()
{
return require 'data/Calculation/Functions/IS_NONTEXT.php';
}
/**
* @dataProvider providerIsEven
*
* @param mixed $expectedResult
*/
public function testIsEven($expectedResult, ...$args)
{
$result = Functions::isEven(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerIsEven()
{
return require 'data/Calculation/Functions/IS_EVEN.php';
}
/**
* @dataProvider providerIsOdd
*
* @param mixed $expectedResult
*/
public function testIsOdd($expectedResult, ...$args)
{
$result = Functions::isOdd(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerIsOdd()
{
return require 'data/Calculation/Functions/IS_ODD.php';
}
/**
* @dataProvider providerTYPE
*
* @param mixed $expectedResult
*/
public function testTYPE($expectedResult, ...$args)
{
$result = Functions::TYPE(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerTYPE()
{
return require 'data/Calculation/Functions/TYPE.php';
}
/**
* @dataProvider providerN
*
* @param mixed $expectedResult
*/
public function testN($expectedResult, ...$args)
{
$result = Functions::n(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerN()
{
return require 'data/Calculation/Functions/N.php';
}
/**
* @dataProvider providerIsFormula
*
* @param mixed $expectedResult
* @param mixed $reference Reference to the cell we wish to test
* @param mixed $value Value of the cell we wish to test
*/
public function testIsFormula($expectedResult, $reference, $value = 'undefined')
{
$ourCell = null;
if ($value !== 'undefined') {
$remoteCell = $this->getMockBuilder(Cell::class)
->disableOriginalConstructor()
->getMock();
$remoteCell->method('isFormula')
->will($this->returnValue(substr($value, 0, 1) == '='));
$remoteSheet = $this->getMockBuilder(Worksheet::class)
->disableOriginalConstructor()
->getMock();
$remoteSheet->method('getCell')
->will($this->returnValue($remoteCell));
$workbook = $this->getMockBuilder(Spreadsheet::class)
->disableOriginalConstructor()
->getMock();
$workbook->method('getSheetByName')
->will($this->returnValue($remoteSheet));
$sheet = $this->getMockBuilder(Worksheet::class)
->disableOriginalConstructor()
->getMock();
$sheet->method('getCell')
->will($this->returnValue($remoteCell));
$sheet->method('getParent')
->will($this->returnValue($workbook));
$ourCell = $this->getMockBuilder(Cell::class)
->disableOriginalConstructor()
->getMock();
$ourCell->method('getWorksheet')
->will($this->returnValue($sheet));
}
$result = Functions::isFormula($reference, $ourCell);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerIsFormula()
{
return require 'data/Calculation/Functions/ISFORMULA.php';
}
/**
* @dataProvider providerIfCondition
*
* @param mixed $expectedResult
*/
public function testIfCondition($expectedResult, ...$args)
{
$result = Functions::ifCondition(...$args);
self::assertEquals($expectedResult, $result);
}
public function providerIfCondition()
{
return require 'data/Calculation/Functions/IF_CONDITION.php';
}
}

View File

@ -0,0 +1,123 @@
<?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';
}
}

View File

@ -0,0 +1,172 @@
<?php
namespace PhpOffice\PhpSpreadsheetTests\Calculation;
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
use PhpOffice\PhpSpreadsheet\Calculation\LookupRef;
use PhpOffice\PhpSpreadsheet\Cell\Cell;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
use PHPUnit\Framework\TestCase;
/**
* Class LookupRefTest.
*/
class LookupRefTest extends TestCase
{
public function setUp()
{
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 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
*
* @param mixed $expectedResult
* @param mixed $reference Reference to the cell we wish to test
* @param mixed $value Value of the cell we wish to test
*/
public function testFormulaText($expectedResult, $reference, $value = 'undefined')
{
$ourCell = null;
if ($value !== 'undefined') {
$remoteCell = $this->getMockBuilder(Cell::class)
->disableOriginalConstructor()
->getMock();
$remoteCell->method('isFormula')
->will($this->returnValue(substr($value, 0, 1) == '='));
$remoteCell->method('getValue')
->will($this->returnValue($value));
$remoteSheet = $this->getMockBuilder(Worksheet::class)
->disableOriginalConstructor()
->getMock();
$remoteSheet->method('getCell')
->will($this->returnValue($remoteCell));
$workbook = $this->getMockBuilder(Spreadsheet::class)
->disableOriginalConstructor()
->getMock();
$workbook->method('getSheetByName')
->will($this->returnValue($remoteSheet));
$sheet = $this->getMockBuilder(Worksheet::class)
->disableOriginalConstructor()
->getMock();
$sheet->method('getCell')
->will($this->returnValue($remoteCell));
$sheet->method('getParent')
->will($this->returnValue($workbook));
$ourCell = $this->getMockBuilder(Cell::class)
->disableOriginalConstructor()
->getMock();
$ourCell->method('getWorksheet')
->will($this->returnValue($sheet));
}
$result = LookupRef::FORMULATEXT($reference, $ourCell);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerFormulaText()
{
return require 'data/Calculation/LookupRef/FORMULATEXT.php';
}
}

View File

@ -0,0 +1,881 @@
<?php
namespace PhpOffice\PhpSpreadsheetTests\Calculation;
use PhpOffice\PhpSpreadsheet\Calculation\Calculation;
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
use PhpOffice\PhpSpreadsheet\Calculation\MathTrig;
use PhpOffice\PhpSpreadsheet\Cell\Cell;
use PhpOffice\PhpSpreadsheet\Worksheet\ColumnDimension;
use PhpOffice\PhpSpreadsheet\Worksheet\RowDimension;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
use PHPUnit\Framework\TestCase;
class MathTrigTest extends TestCase
{
public function setUp()
{
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
}
/**
* @dataProvider providerATAN2
*
* @param mixed $expectedResult
*/
public function testATAN2($expectedResult, ...$args)
{
$result = MathTrig::ATAN2(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerATAN2()
{
return require 'data/Calculation/MathTrig/ATAN2.php';
}
/**
* @dataProvider providerCEILING
*
* @param mixed $expectedResult
*/
public function testCEILING($expectedResult, ...$args)
{
$result = MathTrig::CEILING(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerCEILING()
{
return require 'data/Calculation/MathTrig/CEILING.php';
}
/**
* @dataProvider providerCOMBIN
*
* @param mixed $expectedResult
*/
public function testCOMBIN($expectedResult, ...$args)
{
$result = MathTrig::COMBIN(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerCOMBIN()
{
return require 'data/Calculation/MathTrig/COMBIN.php';
}
/**
* @dataProvider providerEVEN
*
* @param mixed $expectedResult
*/
public function testEVEN($expectedResult, ...$args)
{
$result = MathTrig::EVEN(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerEVEN()
{
return require 'data/Calculation/MathTrig/EVEN.php';
}
/**
* @dataProvider providerODD
*
* @param mixed $expectedResult
*/
public function testODD($expectedResult, ...$args)
{
$result = MathTrig::ODD(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerODD()
{
return require 'data/Calculation/MathTrig/ODD.php';
}
/**
* @dataProvider providerFACT
*
* @param mixed $expectedResult
*/
public function testFACT($expectedResult, ...$args)
{
$result = MathTrig::FACT(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerFACT()
{
return require 'data/Calculation/MathTrig/FACT.php';
}
/**
* @dataProvider providerFACTDOUBLE
*
* @param mixed $expectedResult
*/
public function testFACTDOUBLE($expectedResult, ...$args)
{
$result = MathTrig::FACTDOUBLE(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerFACTDOUBLE()
{
return require 'data/Calculation/MathTrig/FACTDOUBLE.php';
}
/**
* @dataProvider providerFLOOR
*
* @param mixed $expectedResult
*/
public function testFLOOR($expectedResult, ...$args)
{
$result = MathTrig::FLOOR(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerFLOOR()
{
return require 'data/Calculation/MathTrig/FLOOR.php';
}
/**
* @dataProvider providerGCD
*
* @param mixed $expectedResult
*/
public function testGCD($expectedResult, ...$args)
{
$result = MathTrig::GCD(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerGCD()
{
return require 'data/Calculation/MathTrig/GCD.php';
}
/**
* @dataProvider providerLCM
*
* @param mixed $expectedResult
*/
public function testLCM($expectedResult, ...$args)
{
$result = MathTrig::LCM(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerLCM()
{
return require 'data/Calculation/MathTrig/LCM.php';
}
/**
* @dataProvider providerINT
*
* @param mixed $expectedResult
*/
public function testINT($expectedResult, ...$args)
{
$result = MathTrig::INT(...$args);
self::assertEquals($expectedResult, $result);
}
public function providerINT()
{
return require 'data/Calculation/MathTrig/INT.php';
}
/**
* @dataProvider providerSIGN
*
* @param mixed $expectedResult
*/
public function testSIGN($expectedResult, ...$args)
{
$result = MathTrig::SIGN(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerSIGN()
{
return require 'data/Calculation/MathTrig/SIGN.php';
}
/**
* @dataProvider providerPOWER
*
* @param mixed $expectedResult
*/
public function testPOWER($expectedResult, ...$args)
{
$result = MathTrig::POWER(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerPOWER()
{
return require 'data/Calculation/MathTrig/POWER.php';
}
/**
* @dataProvider providerLOG
*
* @param mixed $expectedResult
*/
public function testLOG($expectedResult, ...$args)
{
$result = MathTrig::logBase(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerLOG()
{
return require 'data/Calculation/MathTrig/LOG.php';
}
/**
* @dataProvider providerMOD
*
* @param mixed $expectedResult
*/
public function testMOD($expectedResult, ...$args)
{
$result = MathTrig::MOD(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerMOD()
{
return require 'data/Calculation/MathTrig/MOD.php';
}
/**
* @dataProvider providerMDETERM
*
* @param mixed $expectedResult
*/
public function testMDETERM($expectedResult, ...$args)
{
$result = MathTrig::MDETERM(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerMDETERM()
{
return require 'data/Calculation/MathTrig/MDETERM.php';
}
/**
* @dataProvider providerMINVERSE
*
* @param mixed $expectedResult
*/
public function testMINVERSE($expectedResult, ...$args)
{
$this->markTestIncomplete('TODO: This test should be fixed');
$result = MathTrig::MINVERSE(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerMINVERSE()
{
return require 'data/Calculation/MathTrig/MINVERSE.php';
}
/**
* @dataProvider providerMMULT
*
* @param mixed $expectedResult
*/
public function testMMULT($expectedResult, ...$args)
{
$this->markTestIncomplete('TODO: This test should be fixed');
$result = MathTrig::MMULT(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerMMULT()
{
return require 'data/Calculation/MathTrig/MMULT.php';
}
/**
* @dataProvider providerMULTINOMIAL
*
* @param mixed $expectedResult
*/
public function testMULTINOMIAL($expectedResult, ...$args)
{
$result = MathTrig::MULTINOMIAL(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerMULTINOMIAL()
{
return require 'data/Calculation/MathTrig/MULTINOMIAL.php';
}
/**
* @dataProvider providerMROUND
*
* @param mixed $expectedResult
*/
public function testMROUND($expectedResult, ...$args)
{
Calculation::setArrayReturnType(Calculation::RETURN_ARRAY_AS_VALUE);
$result = MathTrig::MROUND(...$args);
Calculation::setArrayReturnType(Calculation::RETURN_ARRAY_AS_ARRAY);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerMROUND()
{
return require 'data/Calculation/MathTrig/MROUND.php';
}
/**
* @dataProvider providerPRODUCT
*
* @param mixed $expectedResult
*/
public function testPRODUCT($expectedResult, ...$args)
{
$result = MathTrig::PRODUCT(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerPRODUCT()
{
return require 'data/Calculation/MathTrig/PRODUCT.php';
}
/**
* @dataProvider providerQUOTIENT
*
* @param mixed $expectedResult
*/
public function testQUOTIENT($expectedResult, ...$args)
{
$result = MathTrig::QUOTIENT(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerQUOTIENT()
{
return require 'data/Calculation/MathTrig/QUOTIENT.php';
}
/**
* @dataProvider providerROUNDUP
*
* @param mixed $expectedResult
*/
public function testROUNDUP($expectedResult, ...$args)
{
$result = MathTrig::ROUNDUP(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerROUNDUP()
{
return require 'data/Calculation/MathTrig/ROUNDUP.php';
}
/**
* @dataProvider providerROUNDDOWN
*
* @param mixed $expectedResult
*/
public function testROUNDDOWN($expectedResult, ...$args)
{
$result = MathTrig::ROUNDDOWN(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerROUNDDOWN()
{
return require 'data/Calculation/MathTrig/ROUNDDOWN.php';
}
/**
* @dataProvider providerSERIESSUM
*
* @param mixed $expectedResult
*/
public function testSERIESSUM($expectedResult, ...$args)
{
$result = MathTrig::SERIESSUM(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerSERIESSUM()
{
return require 'data/Calculation/MathTrig/SERIESSUM.php';
}
/**
* @dataProvider providerSUMSQ
*
* @param mixed $expectedResult
*/
public function testSUMSQ($expectedResult, ...$args)
{
$result = MathTrig::SUMSQ(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerSUMSQ()
{
return require 'data/Calculation/MathTrig/SUMSQ.php';
}
/**
* @dataProvider providerSUMPRODUCT
*
* @param mixed $expectedResult
*/
public function testSUMPRODUCT($expectedResult, ...$args)
{
$result = MathTrig::SUMPRODUCT(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerSUMPRODUCT()
{
return require 'data/Calculation/MathTrig/SUMPRODUCT.php';
}
/**
* @dataProvider providerSUMX2MY2
*
* @param mixed $expectedResult
*/
public function testSUMX2MY2($expectedResult, ...$args)
{
$result = MathTrig::SUMX2MY2(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerSUMX2MY2()
{
return require 'data/Calculation/MathTrig/SUMX2MY2.php';
}
/**
* @dataProvider providerSUMX2PY2
*
* @param mixed $expectedResult
*/
public function testSUMX2PY2($expectedResult, ...$args)
{
$result = MathTrig::SUMX2PY2(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerSUMX2PY2()
{
return require 'data/Calculation/MathTrig/SUMX2PY2.php';
}
/**
* @dataProvider providerSUMXMY2
*
* @param mixed $expectedResult
*/
public function testSUMXMY2($expectedResult, ...$args)
{
$result = MathTrig::SUMXMY2(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerSUMXMY2()
{
return require 'data/Calculation/MathTrig/SUMXMY2.php';
}
/**
* @dataProvider providerTRUNC
*
* @param mixed $expectedResult
*/
public function testTRUNC($expectedResult, ...$args)
{
$result = MathTrig::TRUNC(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerTRUNC()
{
return require 'data/Calculation/MathTrig/TRUNC.php';
}
/**
* @dataProvider providerROMAN
*
* @param mixed $expectedResult
*/
public function testROMAN($expectedResult, ...$args)
{
$result = MathTrig::ROMAN(...$args);
self::assertEquals($expectedResult, $result);
}
public function providerROMAN()
{
return require 'data/Calculation/MathTrig/ROMAN.php';
}
/**
* @dataProvider providerSQRTPI
*
* @param mixed $expectedResult
*/
public function testSQRTPI($expectedResult, ...$args)
{
$result = MathTrig::SQRTPI(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerSQRTPI()
{
return require 'data/Calculation/MathTrig/SQRTPI.php';
}
/**
* @dataProvider providerSUMIF
*
* @param mixed $expectedResult
*/
public function testSUMIF($expectedResult, ...$args)
{
$result = MathTrig::SUMIF(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerSUMIF()
{
return require 'data/Calculation/MathTrig/SUMIF.php';
}
/**
* @dataProvider providerSUBTOTAL
*
* @param mixed $expectedResult
*/
public function testSUBTOTAL($expectedResult, ...$args)
{
$cell = $this->getMockBuilder(Cell::class)
->setMethods(['getValue'])
->disableOriginalConstructor()
->getMock();
$cell->method('getValue')
->willReturn(null);
$worksheet = $this->getMockBuilder(Worksheet::class)
->setMethods(['cellExists', 'getCell'])
->disableOriginalConstructor()
->getMock();
$worksheet->method('cellExists')
->willReturn(true);
$worksheet->method('getCell')
->willReturn($cell);
$cellReference = $this->getMockBuilder(Cell::class)
->setMethods(['getWorksheet'])
->disableOriginalConstructor()
->getMock();
$cellReference->method('getWorksheet')
->willReturn($worksheet);
array_push($args, $cellReference);
$result = MathTrig::SUBTOTAL(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerSUBTOTAL()
{
return require 'data/Calculation/MathTrig/SUBTOTAL.php';
}
protected function rowVisibility()
{
$data = [1 => false, 2 => true, 3 => false, 4 => true, 5 => false, 6 => false, 7 => false, 8 => true, 9 => false, 10 => true, 11 => true];
foreach ($data as $k => $v) {
yield $k => $v;
}
}
/**
* @dataProvider providerHiddenSUBTOTAL
*
* @param mixed $expectedResult
*/
public function testHiddenSUBTOTAL($expectedResult, ...$args)
{
$visibilityGenerator = $this->rowVisibility();
$rowDimension = $this->getMockBuilder(RowDimension::class)
->setMethods(['getVisible'])
->disableOriginalConstructor()
->getMock();
$rowDimension->method('getVisible')
->will($this->returnCallback(function () use ($visibilityGenerator) {
$result = $visibilityGenerator->current();
$visibilityGenerator->next();
return $result;
}));
$columnDimension = $this->getMockBuilder(ColumnDimension::class)
->setMethods(['getVisible'])
->disableOriginalConstructor()
->getMock();
$columnDimension->method('getVisible')
->willReturn(true);
$cell = $this->getMockBuilder(Cell::class)
->setMethods(['getValue'])
->disableOriginalConstructor()
->getMock();
$cell->method('getValue')
->willReturn('');
$worksheet = $this->getMockBuilder(Worksheet::class)
->setMethods(['cellExists', 'getCell', 'getRowDimension', 'getColumnDimension'])
->disableOriginalConstructor()
->getMock();
$worksheet->method('cellExists')
->willReturn(true);
$worksheet->method('getCell')
->willReturn($cell);
$worksheet->method('getRowDimension')
->willReturn($rowDimension);
$worksheet->method('getColumnDimension')
->willReturn($columnDimension);
$cellReference = $this->getMockBuilder(Cell::class)
->setMethods(['getWorksheet'])
->disableOriginalConstructor()
->getMock();
$cellReference->method('getWorksheet')
->willReturn($worksheet);
array_push($args, $cellReference);
$result = MathTrig::SUBTOTAL(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerHiddenSUBTOTAL()
{
return require 'data/Calculation/MathTrig/SUBTOTALHIDDEN.php';
}
protected function cellValues(array $cellValues)
{
foreach ($cellValues as $k => $v) {
yield $k => $v;
}
}
protected function cellIsFormula(array $cellValues)
{
foreach ($cellValues as $cellValue) {
yield $cellValue[0] === '=';
}
}
/**
* @dataProvider providerNestedSUBTOTAL
*
* @param mixed $expectedResult
*/
public function testNestedSUBTOTAL($expectedResult, ...$args)
{
$cellValueGenerator = $this->cellValues(Functions::flattenArray(array_slice($args, 1)));
$cellIsFormulaGenerator = $this->cellIsFormula(Functions::flattenArray(array_slice($args, 1)));
$cell = $this->getMockBuilder(Cell::class)
->setMethods(['getValue', 'isFormula'])
->disableOriginalConstructor()
->getMock();
$cell->method('getValue')
->will($this->returnCallback(function () use ($cellValueGenerator) {
$result = $cellValueGenerator->current();
$cellValueGenerator->next();
return $result;
}));
$cell->method('isFormula')
->will($this->returnCallback(function () use ($cellIsFormulaGenerator) {
$result = $cellIsFormulaGenerator->current();
$cellIsFormulaGenerator->next();
return $result;
}));
$worksheet = $this->getMockBuilder(Worksheet::class)
->setMethods(['cellExists', 'getCell'])
->disableOriginalConstructor()
->getMock();
$worksheet->method('cellExists')
->willReturn(true);
$worksheet->method('getCell')
->willReturn($cell);
$cellReference = $this->getMockBuilder(Cell::class)
->setMethods(['getWorksheet'])
->disableOriginalConstructor()
->getMock();
$cellReference->method('getWorksheet')
->willReturn($worksheet);
array_push($args, $cellReference);
$result = MathTrig::SUBTOTAL(...$args);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerNestedSUBTOTAL()
{
return require 'data/Calculation/MathTrig/SUBTOTALNESTED.php';
}
/**
* @dataProvider providerSEC
*
* @param mixed $expectedResult
* @param mixed $angle
*/
public function testSEC($expectedResult, $angle)
{
$result = MathTrig::SEC($angle);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerSEC()
{
return require 'data/Calculation/MathTrig/SEC.php';
}
/**
* @dataProvider providerSECH
*
* @param mixed $expectedResult
* @param mixed $angle
*/
public function testSECH($expectedResult, $angle)
{
$result = MathTrig::SECH($angle);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerSECH()
{
return require 'data/Calculation/MathTrig/SECH.php';
}
/**
* @dataProvider providerCSC
*
* @param mixed $expectedResult
* @param mixed $angle
*/
public function testCSC($expectedResult, $angle)
{
$result = MathTrig::CSC($angle);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerCSC()
{
return require 'data/Calculation/MathTrig/CSC.php';
}
/**
* @dataProvider providerCSCH
*
* @param mixed $expectedResult
* @param mixed $angle
*/
public function testCSCH($expectedResult, $angle)
{
$result = MathTrig::CSCH($angle);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerCSCH()
{
return require 'data/Calculation/MathTrig/CSCH.php';
}
/**
* @dataProvider providerCOT
*
* @param mixed $expectedResult
* @param mixed $angle
*/
public function testCOT($expectedResult, $angle)
{
$result = MathTrig::COT($angle);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerCOT()
{
return require 'data/Calculation/MathTrig/COT.php';
}
/**
* @dataProvider providerCOTH
*
* @param mixed $expectedResult
* @param mixed $angle
*/
public function testCOTH($expectedResult, $angle)
{
$result = MathTrig::COTH($angle);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerCOTH()
{
return require 'data/Calculation/MathTrig/COTH.php';
}
/**
* @dataProvider providerACOT
*
* @param mixed $expectedResult
* @param mixed $number
*/
public function testACOT($expectedResult, $number)
{
$result = MathTrig::ACOT($number);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerACOT()
{
return require 'data/Calculation/MathTrig/ACOT.php';
}
/**
* @dataProvider providerACOTH
*
* @param mixed $expectedResult
* @param mixed $number
*/
public function testACOTH($expectedResult, $number)
{
$result = MathTrig::ACOTH($number);
self::assertEquals($expectedResult, $result, null, 1E-12);
}
public function providerACOTH()
{
return require 'data/Calculation/MathTrig/ACOTH.php';
}
}

View File

@ -0,0 +1,431 @@
<?php
namespace PhpOffice\PhpSpreadsheetTests\Calculation;
use PhpOffice\PhpSpreadsheet\Calculation\Calculation;
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
use PhpOffice\PhpSpreadsheet\Calculation\TextData;
use PhpOffice\PhpSpreadsheet\Shared\StringHelper;
use PHPUnit\Framework\TestCase;
class TextDataTest extends TestCase
{
public function setUp()
{
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
StringHelper::setDecimalSeparator('.');
StringHelper::setThousandsSeparator(',');
StringHelper::setCurrencyCode('$');
}
public function tearDown()
{
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
StringHelper::setDecimalSeparator('.');
StringHelper::setThousandsSeparator(',');
StringHelper::setCurrencyCode('$');
}
/**
* @dataProvider providerCHAR
*
* @param mixed $expectedResult
*/
public function testCHAR($expectedResult, ...$args)
{
$result = TextData::CHARACTER(...$args);
self::assertEquals($expectedResult, $result);
}
public function providerCHAR()
{
return require 'data/Calculation/TextData/CHAR.php';
}
/**
* @dataProvider providerCODE
*
* @param mixed $expectedResult
*/
public function testCODE($expectedResult, ...$args)
{
$result = TextData::ASCIICODE(...$args);
self::assertEquals($expectedResult, $result);
}
public function providerCODE()
{
return require 'data/Calculation/TextData/CODE.php';
}
/**
* @dataProvider providerCONCATENATE
*
* @param mixed $expectedResult
*/
public function testCONCATENATE($expectedResult, ...$args)
{
$result = TextData::CONCATENATE(...$args);
self::assertEquals($expectedResult, $result);
}
public function providerCONCATENATE()
{
return require 'data/Calculation/TextData/CONCATENATE.php';
}
/**
* @dataProvider providerLEFT
*
* @param mixed $expectedResult
*/
public function testLEFT($expectedResult, ...$args)
{
$result = TextData::LEFT(...$args);
self::assertEquals($expectedResult, $result);
}
public function providerLEFT()
{
return require 'data/Calculation/TextData/LEFT.php';
}
/**
* @dataProvider providerMID
*
* @param mixed $expectedResult
*/
public function testMID($expectedResult, ...$args)
{
$result = TextData::MID(...$args);
self::assertEquals($expectedResult, $result);
}
public function providerMID()
{
return require 'data/Calculation/TextData/MID.php';
}
/**
* @dataProvider providerRIGHT
*
* @param mixed $expectedResult
*/
public function testRIGHT($expectedResult, ...$args)
{
$result = TextData::RIGHT(...$args);
self::assertEquals($expectedResult, $result);
}
public function providerRIGHT()
{
return require 'data/Calculation/TextData/RIGHT.php';
}
/**
* @dataProvider providerLOWER
*
* @param mixed $expectedResult
*/
public function testLOWER($expectedResult, ...$args)
{
$result = TextData::LOWERCASE(...$args);
self::assertEquals($expectedResult, $result);
}
public function providerLOWER()
{
return require 'data/Calculation/TextData/LOWER.php';
}
/**
* @dataProvider providerUPPER
*
* @param mixed $expectedResult
*/
public function testUPPER($expectedResult, ...$args)
{
$result = TextData::UPPERCASE(...$args);
self::assertEquals($expectedResult, $result);
}
public function providerUPPER()
{
return require 'data/Calculation/TextData/UPPER.php';
}
/**
* @dataProvider providerPROPER
*
* @param mixed $expectedResult
*/
public function testPROPER($expectedResult, ...$args)
{
$result = TextData::PROPERCASE(...$args);
self::assertEquals($expectedResult, $result);
}
public function providerPROPER()
{
return require 'data/Calculation/TextData/PROPER.php';
}
/**
* @dataProvider providerLEN
*
* @param mixed $expectedResult
*/
public function testLEN($expectedResult, ...$args)
{
$result = TextData::STRINGLENGTH(...$args);
self::assertEquals($expectedResult, $result);
}
public function providerLEN()
{
return require 'data/Calculation/TextData/LEN.php';
}
/**
* @dataProvider providerSEARCH
*
* @param mixed $expectedResult
*/
public function testSEARCH($expectedResult, ...$args)
{
$result = TextData::SEARCHINSENSITIVE(...$args);
self::assertEquals($expectedResult, $result);
}
public function providerSEARCH()
{
return require 'data/Calculation/TextData/SEARCH.php';
}
/**
* @dataProvider providerFIND
*
* @param mixed $expectedResult
*/
public function testFIND($expectedResult, ...$args)
{
$result = TextData::SEARCHSENSITIVE(...$args);
self::assertEquals($expectedResult, $result);
}
public function providerFIND()
{
return require 'data/Calculation/TextData/FIND.php';
}
/**
* @dataProvider providerREPLACE
*
* @param mixed $expectedResult
*/
public function testREPLACE($expectedResult, ...$args)
{
$result = TextData::REPLACE(...$args);
self::assertEquals($expectedResult, $result);
}
public function providerREPLACE()
{
return require 'data/Calculation/TextData/REPLACE.php';
}
/**
* @dataProvider providerSUBSTITUTE
*
* @param mixed $expectedResult
*/
public function testSUBSTITUTE($expectedResult, ...$args)
{
$result = TextData::SUBSTITUTE(...$args);
self::assertEquals($expectedResult, $result);
}
public function providerSUBSTITUTE()
{
return require 'data/Calculation/TextData/SUBSTITUTE.php';
}
/**
* @dataProvider providerTRIM
*
* @param mixed $expectedResult
*/
public function testTRIM($expectedResult, ...$args)
{
$result = TextData::TRIMSPACES(...$args);
self::assertEquals($expectedResult, $result);
}
public function providerTRIM()
{
return require 'data/Calculation/TextData/TRIM.php';
}
/**
* @dataProvider providerCLEAN
*
* @param mixed $expectedResult
*/
public function testCLEAN($expectedResult, ...$args)
{
$result = TextData::TRIMNONPRINTABLE(...$args);
self::assertEquals($expectedResult, $result);
}
public function providerCLEAN()
{
return require 'data/Calculation/TextData/CLEAN.php';
}
/**
* @dataProvider providerDOLLAR
*
* @param mixed $expectedResult
*/
public function testDOLLAR($expectedResult, ...$args)
{
$result = TextData::DOLLAR(...$args);
self::assertEquals($expectedResult, $result);
}
public function providerDOLLAR()
{
return require 'data/Calculation/TextData/DOLLAR.php';
}
/**
* @dataProvider providerFIXED
*
* @param mixed $expectedResult
*/
public function testFIXED($expectedResult, ...$args)
{
$result = TextData::FIXEDFORMAT(...$args);
self::assertEquals($expectedResult, $result);
}
public function providerFIXED()
{
return require 'data/Calculation/TextData/FIXED.php';
}
/**
* @dataProvider providerT
*
* @param mixed $expectedResult
*/
public function testT($expectedResult, ...$args)
{
$result = TextData::RETURNSTRING(...$args);
self::assertEquals($expectedResult, $result);
}
public function providerT()
{
return require 'data/Calculation/TextData/T.php';
}
/**
* @dataProvider providerTEXT
*
* @param mixed $expectedResult
*/
public function testTEXT($expectedResult, ...$args)
{
// Enforce decimal and thousands separator values to UK/US, and currency code to USD
StringHelper::setDecimalSeparator('.');
StringHelper::setThousandsSeparator(',');
StringHelper::setCurrencyCode('$');
$result = TextData::TEXTFORMAT(...$args);
self::assertEquals($expectedResult, $result);
}
public function providerTEXT()
{
return require 'data/Calculation/TextData/TEXT.php';
}
/**
* @dataProvider providerVALUE
*
* @param mixed $expectedResult
*/
public function testVALUE($expectedResult, ...$args)
{
StringHelper::setDecimalSeparator('.');
StringHelper::setThousandsSeparator(' ');
StringHelper::setCurrencyCode('$');
$result = TextData::VALUE(...$args);
self::assertEquals($expectedResult, $result, null, 1E-8);
}
public function providerVALUE()
{
return require 'data/Calculation/TextData/VALUE.php';
}
/**
* @dataProvider providerEXACT
*
* @param mixed $expectedResult
* @param array $args
*/
public function testEXACT($expectedResult, ...$args)
{
StringHelper::setDecimalSeparator('.');
StringHelper::setThousandsSeparator(' ');
StringHelper::setCurrencyCode('$');
$result = TextData::EXACT(...$args);
self::assertSame($expectedResult, $result, null);
}
/**
* @return array
*/
public function providerEXACT()
{
return require 'data/Calculation/TextData/EXACT.php';
}
/**
* @dataProvider providerTEXTJOIN
*
* @param mixed $expectedResult
* @param array $args
*/
public function testTEXTJOIN($expectedResult, array $args)
{
$result = TextData::TEXTJOIN(...$args);
self::assertEquals($expectedResult, $result);
}
public function providerTEXTJOIN()
{
return require 'data/Calculation/TextData/TEXTJOIN.php';
}
/**
* @dataProvider providerNUMBERVALUE
*
* @param mixed $expectedResult
* @param array $args
*/
public function testNUMBERVALUE($expectedResult, array $args)
{
$result = TextData::NUMBERVALUE(...$args);
self::assertEquals($expectedResult, $result);
}
public function providerNUMBERVALUE()
{
return require 'data/Calculation/TextData/NUMBERVALUE.php';
}
}