PhpSpreadsheet/unitTests/Classes/PHPExcel/Calculation/MathTrigTest.php
Adrien Crivelli a0da3e32ec Double quote support for SUMIF() condition
SUMIF() condition can have double quote, such as '=SUMIF(A2:A4,">""",B2:B4)'.
This formula purpose is to compare the character double quote (").

In our previous patch (commit f1a1f525) we wrongly assumed that
PHPExcel_Calculation_MathTrig::SUMIF() expected the condition to escaped ('>""'),
but this is actually not the case in real use of PHPExcel, so the unit tests were
modified accordingly to use non-escaped condition ('>"').
2014-01-17 21:01:57 +09:00

559 lines
15 KiB
PHP

<?php
require_once 'testDataFileIterator.php';
class MathTrigTest extends PHPUnit_Framework_TestCase
{
public function setUp()
{
if (!defined('PHPEXCEL_ROOT'))
{
define('PHPEXCEL_ROOT', APPLICATION_PATH . '/');
}
require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php');
}
/**
* @dataProvider providerATAN2
*/
public function testATAN2()
{
$args = func_get_args();
$expectedResult = array_pop($args);
$result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','ATAN2'),$args);
$this->assertEquals($expectedResult, $result, NULL, 1E-12);
}
public function providerATAN2()
{
return new testDataFileIterator('rawTestData/Calculation/MathTrig/ATAN2.data');
}
/**
* @dataProvider providerCEILING
*/
public function testCEILING()
{
$args = func_get_args();
$expectedResult = array_pop($args);
$result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','CEILING'),$args);
$this->assertEquals($expectedResult, $result, NULL, 1E-12);
}
public function providerCEILING()
{
return new testDataFileIterator('rawTestData/Calculation/MathTrig/CEILING.data');
}
/**
* @dataProvider providerCOMBIN
*/
public function testCOMBIN()
{
$args = func_get_args();
$expectedResult = array_pop($args);
$result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','COMBIN'),$args);
$this->assertEquals($expectedResult, $result, NULL, 1E-12);
}
public function providerCOMBIN()
{
return new testDataFileIterator('rawTestData/Calculation/MathTrig/COMBIN.data');
}
/**
* @dataProvider providerEVEN
*/
public function testEVEN()
{
$args = func_get_args();
$expectedResult = array_pop($args);
$result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','EVEN'),$args);
$this->assertEquals($expectedResult, $result, NULL, 1E-12);
}
public function providerEVEN()
{
return new testDataFileIterator('rawTestData/Calculation/MathTrig/EVEN.data');
}
/**
* @dataProvider providerODD
*/
public function testODD()
{
$args = func_get_args();
$expectedResult = array_pop($args);
$result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','ODD'),$args);
$this->assertEquals($expectedResult, $result, NULL, 1E-12);
}
public function providerODD()
{
return new testDataFileIterator('rawTestData/Calculation/MathTrig/ODD.data');
}
/**
* @dataProvider providerFACT
*/
public function testFACT()
{
$args = func_get_args();
$expectedResult = array_pop($args);
$result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','FACT'),$args);
$this->assertEquals($expectedResult, $result, NULL, 1E-12);
}
public function providerFACT()
{
return new testDataFileIterator('rawTestData/Calculation/MathTrig/FACT.data');
}
/**
* @dataProvider providerFACTDOUBLE
*/
public function testFACTDOUBLE()
{
$args = func_get_args();
$expectedResult = array_pop($args);
$result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','FACTDOUBLE'),$args);
$this->assertEquals($expectedResult, $result, NULL, 1E-12);
}
public function providerFACTDOUBLE()
{
return new testDataFileIterator('rawTestData/Calculation/MathTrig/FACTDOUBLE.data');
}
/**
* @dataProvider providerFLOOR
*/
public function testFLOOR()
{
$args = func_get_args();
$expectedResult = array_pop($args);
$result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','FLOOR'),$args);
$this->assertEquals($expectedResult, $result, NULL, 1E-12);
}
public function providerFLOOR()
{
return new testDataFileIterator('rawTestData/Calculation/MathTrig/FLOOR.data');
}
/**
* @dataProvider providerGCD
*/
public function testGCD()
{
$args = func_get_args();
$expectedResult = array_pop($args);
$result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','GCD'),$args);
$this->assertEquals($expectedResult, $result, NULL, 1E-12);
}
public function providerGCD()
{
return new testDataFileIterator('rawTestData/Calculation/MathTrig/GCD.data');
}
/**
* @dataProvider providerLCM
*/
public function testLCM()
{
$args = func_get_args();
$expectedResult = array_pop($args);
$result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','LCM'),$args);
$this->assertEquals($expectedResult, $result, NULL, 1E-12);
}
public function providerLCM()
{
return new testDataFileIterator('rawTestData/Calculation/MathTrig/LCM.data');
}
/**
* @dataProvider providerINT
*/
public function testINT()
{
$args = func_get_args();
$expectedResult = array_pop($args);
$result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','INT'),$args);
$this->assertEquals($expectedResult, $result);
}
public function providerINT()
{
return new testDataFileIterator('rawTestData/Calculation/MathTrig/INT.data');
}
/**
* @dataProvider providerSIGN
*/
public function testSIGN()
{
$args = func_get_args();
$expectedResult = array_pop($args);
$result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','SIGN'),$args);
$this->assertEquals($expectedResult, $result, NULL, 1E-12);
}
public function providerSIGN()
{
return new testDataFileIterator('rawTestData/Calculation/MathTrig/SIGN.data');
}
/**
* @dataProvider providerPOWER
*/
public function testPOWER()
{
$args = func_get_args();
$expectedResult = array_pop($args);
$result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','POWER'),$args);
$this->assertEquals($expectedResult, $result, NULL, 1E-12);
}
public function providerPOWER()
{
return new testDataFileIterator('rawTestData/Calculation/MathTrig/POWER.data');
}
/**
* @dataProvider providerLOG
*/
public function testLOG()
{
$args = func_get_args();
$expectedResult = array_pop($args);
$result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','LOG_BASE'),$args);
$this->assertEquals($expectedResult, $result, NULL, 1E-12);
}
public function providerLOG()
{
return new testDataFileIterator('rawTestData/Calculation/MathTrig/LOG.data');
}
/**
* @dataProvider providerMOD
*/
public function testMOD()
{
$args = func_get_args();
$expectedResult = array_pop($args);
$result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','MOD'),$args);
$this->assertEquals($expectedResult, $result, NULL, 1E-12);
}
public function providerMOD()
{
return new testDataFileIterator('rawTestData/Calculation/MathTrig/MOD.data');
}
/**
* @dataProvider providerMDETERM
*/
public function testMDETERM()
{
$args = func_get_args();
$expectedResult = array_pop($args);
$result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','MDETERM'),$args);
$this->assertEquals($expectedResult, $result, NULL, 1E-12);
}
public function providerMDETERM()
{
return new testDataFileIterator('rawTestData/Calculation/MathTrig/MDETERM.data');
}
/**
* @dataProvider providerMINVERSE
*/
public function testMINVERSE()
{
$args = func_get_args();
$expectedResult = array_pop($args);
$result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','MINVERSE'),$args);
$this->assertEquals($expectedResult, $result, NULL, 1E-12);
}
public function providerMINVERSE()
{
return new testDataFileIterator('rawTestData/Calculation/MathTrig/MINVERSE.data');
}
/**
* @dataProvider providerMMULT
*/
public function testMMULT()
{
$args = func_get_args();
$expectedResult = array_pop($args);
$result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','MMULT'),$args);
$this->assertEquals($expectedResult, $result, NULL, 1E-12);
}
public function providerMMULT()
{
return new testDataFileIterator('rawTestData/Calculation/MathTrig/MMULT.data');
}
/**
* @dataProvider providerMULTINOMIAL
*/
public function testMULTINOMIAL()
{
$args = func_get_args();
$expectedResult = array_pop($args);
$result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','MULTINOMIAL'),$args);
$this->assertEquals($expectedResult, $result, NULL, 1E-12);
}
public function providerMULTINOMIAL()
{
return new testDataFileIterator('rawTestData/Calculation/MathTrig/MULTINOMIAL.data');
}
/**
* @dataProvider providerMROUND
*/
public function testMROUND()
{
$args = func_get_args();
$expectedResult = array_pop($args);
PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE);
$result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','MROUND'),$args);
PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_ARRAY);
$this->assertEquals($expectedResult, $result, NULL, 1E-12);
}
public function providerMROUND()
{
return new testDataFileIterator('rawTestData/Calculation/MathTrig/MROUND.data');
}
/**
* @dataProvider providerPRODUCT
*/
public function testPRODUCT()
{
$args = func_get_args();
$expectedResult = array_pop($args);
$result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','PRODUCT'),$args);
$this->assertEquals($expectedResult, $result, NULL, 1E-12);
}
public function providerPRODUCT()
{
return new testDataFileIterator('rawTestData/Calculation/MathTrig/PRODUCT.data');
}
/**
* @dataProvider providerQUOTIENT
*/
public function testQUOTIENT()
{
$args = func_get_args();
$expectedResult = array_pop($args);
$result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','QUOTIENT'),$args);
$this->assertEquals($expectedResult, $result, NULL, 1E-12);
}
public function providerQUOTIENT()
{
return new testDataFileIterator('rawTestData/Calculation/MathTrig/QUOTIENT.data');
}
/**
* @dataProvider providerROUNDUP
*/
public function testROUNDUP()
{
$args = func_get_args();
$expectedResult = array_pop($args);
$result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','ROUNDUP'),$args);
$this->assertEquals($expectedResult, $result, NULL, 1E-12);
}
public function providerROUNDUP()
{
return new testDataFileIterator('rawTestData/Calculation/MathTrig/ROUNDUP.data');
}
/**
* @dataProvider providerROUNDDOWN
*/
public function testROUNDDOWN()
{
$args = func_get_args();
$expectedResult = array_pop($args);
$result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','ROUNDDOWN'),$args);
$this->assertEquals($expectedResult, $result, NULL, 1E-12);
}
public function providerROUNDDOWN()
{
return new testDataFileIterator('rawTestData/Calculation/MathTrig/ROUNDDOWN.data');
}
/**
* @dataProvider providerSERIESSUM
*/
public function testSERIESSUM()
{
$args = func_get_args();
$expectedResult = array_pop($args);
$result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','SERIESSUM'),$args);
$this->assertEquals($expectedResult, $result, NULL, 1E-12);
}
public function providerSERIESSUM()
{
return new testDataFileIterator('rawTestData/Calculation/MathTrig/SERIESSUM.data');
}
/**
* @dataProvider providerSUMSQ
*/
public function testSUMSQ()
{
$args = func_get_args();
$expectedResult = array_pop($args);
$result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','SUMSQ'),$args);
$this->assertEquals($expectedResult, $result, NULL, 1E-12);
}
public function providerSUMSQ()
{
return new testDataFileIterator('rawTestData/Calculation/MathTrig/SUMSQ.data');
}
/**
* @dataProvider providerTRUNC
*/
public function testTRUNC()
{
$args = func_get_args();
$expectedResult = array_pop($args);
$result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','TRUNC'),$args);
$this->assertEquals($expectedResult, $result, NULL, 1E-12);
}
public function providerTRUNC()
{
return new testDataFileIterator('rawTestData/Calculation/MathTrig/TRUNC.data');
}
/**
* @dataProvider providerROMAN
*/
public function testROMAN()
{
$args = func_get_args();
$expectedResult = array_pop($args);
$result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','ROMAN'),$args);
$this->assertEquals($expectedResult, $result);
}
public function providerROMAN()
{
return new testDataFileIterator('rawTestData/Calculation/MathTrig/ROMAN.data');
}
/**
* @dataProvider providerSQRTPI
*/
public function testSQRTPI()
{
$args = func_get_args();
$expectedResult = array_pop($args);
$result = call_user_func_array(array('PHPExcel_Calculation_MathTrig','SQRTPI'),$args);
$this->assertEquals($expectedResult, $result, NULL, 1E-12);
}
public function providerSQRTPI()
{
return new testDataFileIterator('rawTestData/Calculation/MathTrig/SQRTPI.data');
}
/**
* @dataProvider providerSUMIF
*/
public function testSUMIF()
{
$args = func_get_args();
$expectedResult = array_pop($args);
$result = call_user_func_array(array('PHPExcel_Calculation_MathTrig', 'SUMIF'), $args);
$this->assertEquals($expectedResult, $result, NULL, 1E-12);
}
public function providerSUMIF()
{
return array(
array(
array(
array(1),
array(5),
array(10),
),
'>=5',
15,
),
array(
array(
array('text'),
array(2),
),
'=text',
array(
array(10),
array(100),
),
10,
),
array(
array(
array('"text with quotes"'),
array(2),
),
'="text with quotes"',
array(
array(10),
array(100),
),
10,
),
array(
array(
array('"text with quotes"'),
array(''),
),
'>"', // Compare to the single characater " (double quote)
array(
array(10),
array(100),
),
10
),
array(
array(
array(''),
array('anything'),
),
'>"', // Compare to the single characater " (double quote)
array(
array(10),
array(100),
),
100
),
);
}
}