#401 : PHPUnit Fixes (Calculation > DateTime)

This commit is contained in:
Progi1984 2016-05-19 08:49:09 +02:00
parent 104d8362ec
commit 98f7d4bf08
9 changed files with 125 additions and 98 deletions

View File

@ -485,6 +485,7 @@ class DateTime
*/ */
public static function DATEVALUE($dateValue = 1) public static function DATEVALUE($dateValue = 1)
{ {
$dateValueOrig= $dateValue;
$dateValue = trim(Functions::flattenSingleValue($dateValue), '"'); $dateValue = trim(Functions::flattenSingleValue($dateValue), '"');
// Strip any ordinals because they're allowed in Excel (English only) // Strip any ordinals because they're allowed in Excel (English only)
$dateValue = preg_replace('/(\d)(st|nd|rd|th)([ -\/])/Ui', '$1$3', $dateValue); $dateValue = preg_replace('/(\d)(st|nd|rd|th)([ -\/])/Ui', '$1$3', $dateValue);
@ -513,7 +514,12 @@ class DateTime
if ($yearFound) { if ($yearFound) {
array_unshift($t1, 1); array_unshift($t1, 1);
} else { } else {
array_push($t1, date('Y')); if ($t1[1] > 29) {
$t1[1] += 1900;
array_unshift($t1, 1);
} else {
array_push($t1, date('Y'));
}
} }
} }
unset($t); unset($t);
@ -535,6 +541,9 @@ class DateTime
} else { } else {
return Functions::VALUE(); return Functions::VALUE();
} }
if ($testVal1 < 31 && $testVal2 < 12 && $testVal3 < 12 && strlen($testVal3) == 2) {
$testVal3 += 2000;
}
$PHPDateArray = date_parse($testVal1.'-'.$testVal2.'-'.$testVal3); $PHPDateArray = date_parse($testVal1.'-'.$testVal2.'-'.$testVal3);
if (($PHPDateArray === false) || ($PHPDateArray['error_count'] > 0)) { if (($PHPDateArray === false) || ($PHPDateArray['error_count'] > 0)) {
$PHPDateArray = date_parse($testVal2.'-'.$testVal1.'-'.$testVal3); $PHPDateArray = date_parse($testVal2.'-'.$testVal1.'-'.$testVal3);
@ -558,6 +567,9 @@ class DateTime
if ($PHPDateArray['day'] == '') { if ($PHPDateArray['day'] == '') {
$PHPDateArray['day'] = strftime('%d'); $PHPDateArray['day'] = strftime('%d');
} }
if (!checkdate($PHPDateArray['month'], $PHPDateArray['day'], $PHPDateArray['year'])) {
return Functions::VALUE();
}
$excelDateValue = floor( $excelDateValue = floor(
\PHPExcel\Shared\Date::formattedPHPToExcel( \PHPExcel\Shared\Date::formattedPHPToExcel(
$PHPDateArray['year'], $PHPDateArray['year'],
@ -568,7 +580,6 @@ class DateTime
$PHPDateArray['second'] $PHPDateArray['second']
) )
); );
switch (Functions::getReturnDateType()) { switch (Functions::getReturnDateType()) {
case Functions::RETURNDATE_EXCEL: case Functions::RETURNDATE_EXCEL:
return (float) $excelDateValue; return (float) $excelDateValue;
@ -609,6 +620,12 @@ class DateTime
$timeValue = trim(Functions::flattenSingleValue($timeValue), '"'); $timeValue = trim(Functions::flattenSingleValue($timeValue), '"');
$timeValue = str_replace(array('/', '.'), array('-', '-'), $timeValue); $timeValue = str_replace(array('/', '.'), array('-', '-'), $timeValue);
$arraySplit = preg_split('/[\/:\-\s]/', $timeValue);
if ((count($arraySplit) == 2 ||count($arraySplit) == 3) && $arraySplit[0] > 24) {
$arraySplit[0] = ($arraySplit[0] % 24);
$timeValue = implode(':', $arraySplit);
}
$PHPDateArray = date_parse($timeValue); $PHPDateArray = date_parse($timeValue);
if (($PHPDateArray !== false) && ($PHPDateArray['error_count'] == 0)) { if (($PHPDateArray !== false) && ($PHPDateArray['error_count'] == 0)) {
if (Functions::getCompatibilityMode() == Functions::COMPATIBILITY_OPENOFFICE) { if (Functions::getCompatibilityMode() == Functions::COMPATIBILITY_OPENOFFICE) {
@ -696,6 +713,9 @@ class DateTime
if ($endMonths < $startMonths) { if ($endMonths < $startMonths) {
--$retVal; --$retVal;
} elseif (($endMonths == $startMonths) && ($endDays < $startDays)) { } elseif (($endMonths == $startMonths) && ($endDays < $startDays)) {
// Remove start month
--$retVal;
// Remove end month
--$retVal; --$retVal;
} }
break; break;
@ -704,9 +724,7 @@ class DateTime
$retVal = $endDays; $retVal = $endDays;
$PHPEndDateObject->modify('-'.$endDays.' days'); $PHPEndDateObject->modify('-'.$endDays.' days');
$adjustDays = $PHPEndDateObject->format('j'); $adjustDays = $PHPEndDateObject->format('j');
if ($adjustDays > $startDays) { $retVal += ($adjustDays - $startDays);
$retVal += ($adjustDays - $startDays);
}
} else { } else {
$retVal = $endDays - $startDays; $retVal = $endDays - $startDays;
} }
@ -735,7 +753,7 @@ class DateTime
} }
break; break;
default: default:
$retVal = Functions::NAN(); $retVal = Functions::VALUE();
} }
return $retVal; return $retVal;
} }
@ -1251,7 +1269,6 @@ class DateTime
// Execute function // Execute function
$PHPDateObject = \PHPExcel\Shared\Date::excelToPHPObject($dateValue); $PHPDateObject = \PHPExcel\Shared\Date::excelToPHPObject($dateValue);
$dayOfYear = $PHPDateObject->format('z'); $dayOfYear = $PHPDateObject->format('z');
$dow = $PHPDateObject->format('w');
$PHPDateObject->modify('-' . $dayOfYear . ' days'); $PHPDateObject->modify('-' . $dayOfYear . ' days');
$dow = $PHPDateObject->format('w'); $dow = $PHPDateObject->format('w');
$daysInFirstWeek = 7 - (($dow + (2 - $method)) % 7); $daysInFirstWeek = 7 - (($dow + (2 - $method)) % 7);
@ -1279,9 +1296,10 @@ class DateTime
{ {
$dateValue = Functions::flattenSingleValue($dateValue); $dateValue = Functions::flattenSingleValue($dateValue);
if ($dateValue === null) { if (empty($dateValue)) {
$dateValue = 1; $dateValue = 1;
} elseif (is_string($dateValue = self::getDateValue($dateValue))) { }
if (is_string($dateValue = self::getDateValue($dateValue))) {
return Functions::VALUE(); return Functions::VALUE();
} elseif ($dateValue < 0.0) { } elseif ($dateValue < 0.0) {
return Functions::NAN(); return Functions::NAN();

View File

@ -602,8 +602,10 @@ class MathTrig
} }
++$row; ++$row;
} }
if ($row != $maxColumn) { foreach ($matrixValues as $matrixRow) {
return Functions::VALUE(); if (count($matrixRow) != $maxColumn) {
return Functions::VALUE();
}
} }
try { try {

View File

@ -2,12 +2,19 @@
namespace PHPExcel\Calculation; namespace PHPExcel\Calculation;
use PhpSpreadhsheet\unitTests\TestDataFileIterator;
use PHPExcel\Shared\Date;
/**
* Class DateTimeTest
* @package PHPExcel\Calculation
*/
class DateTimeTest extends \PHPUnit_Framework_TestCase class DateTimeTest extends \PHPUnit_Framework_TestCase
{ {
public function setUp() public function setUp()
{ {
\PHPExcel\Calculation\Functions::setCompatibilityMode(\PHPExcel\Calculation\Functions::COMPATIBILITY_EXCEL); Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
} }
/** /**
@ -23,22 +30,22 @@ class DateTimeTest extends \PHPUnit_Framework_TestCase
public function providerDATE() public function providerDATE()
{ {
return new \PhpSpreadhsheet\unitTests\TestDataFileIterator('rawTestData/Calculation/DateTime/DATE.data'); return new TestDataFileIterator('rawTestData/Calculation/DateTime/DATE.data');
} }
public function testDATEtoPHP() public function testDATEtoPHP()
{ {
\PHPExcel\Calculation\Functions::setReturnDateType(\PHPExcel\Calculation\Functions::RETURNDATE_PHP_NUMERIC); Functions::setReturnDateType(Functions::RETURNDATE_PHP_NUMERIC);
$result = \PHPExcel\Calculation\DateTime::DATE(2012, 1, 31); $result = DateTime::DATE(2012, 1, 31);
\PHPExcel\Calculation\Functions::setReturnDateType(\PHPExcel\Calculation\Functions::RETURNDATE_EXCEL); Functions::setReturnDateType(Functions::RETURNDATE_EXCEL);
$this->assertEquals(1327968000, $result, null, 1E-8); $this->assertEquals(1327968000, $result, null, 1E-8);
} }
public function testDATEtoPHPObject() public function testDATEtoPHPObject()
{ {
\PHPExcel\Calculation\Functions::setReturnDateType(\PHPExcel\Calculation\Functions::RETURNDATE_PHP_OBJECT); Functions::setReturnDateType(Functions::RETURNDATE_PHP_OBJECT);
$result = \PHPExcel\Calculation\DateTime::DATE(2012, 1, 31); $result = DateTime::DATE(2012, 1, 31);
\PHPExcel\Calculation\Functions::setReturnDateType(\PHPExcel\Calculation\Functions::RETURNDATE_EXCEL); Functions::setReturnDateType(Functions::RETURNDATE_EXCEL);
// Must return an object... // Must return an object...
$this->assertTrue(is_object($result)); $this->assertTrue(is_object($result));
// ... of the correct type // ... of the correct type
@ -49,17 +56,17 @@ class DateTimeTest extends \PHPUnit_Framework_TestCase
public function testDATEwith1904Calendar() public function testDATEwith1904Calendar()
{ {
\PHPExcel\Shared\Date::setExcelCalendar(\PHPExcel\Shared\Date::CALENDAR_MAC_1904); Date::setExcelCalendar(Date::CALENDAR_MAC_1904);
$result = \PHPExcel\Calculation\DateTime::DATE(1918, 11, 11); $result = DateTime::DATE(1918, 11, 11);
\PHPExcel\Shared\Date::setExcelCalendar(\PHPExcel\Shared\Date::CALENDAR_WINDOWS_1900); Date::setExcelCalendar(Date::CALENDAR_WINDOWS_1900);
$this->assertEquals($result, 5428); $this->assertEquals($result, 5428);
} }
public function testDATEwith1904CalendarError() public function testDATEwith1904CalendarError()
{ {
\PHPExcel\Shared\Date::setExcelCalendar(\PHPExcel\Shared\Date::CALENDAR_MAC_1904); Date::setExcelCalendar(Date::CALENDAR_MAC_1904);
$result = \PHPExcel\Calculation\DateTime::DATE(1901, 1, 31); $result = DateTime::DATE(1901, 1, 31);
\PHPExcel\Shared\Date::setExcelCalendar(\PHPExcel\Shared\Date::CALENDAR_WINDOWS_1900); Date::setExcelCalendar(Date::CALENDAR_WINDOWS_1900);
$this->assertEquals($result, '#NUM!'); $this->assertEquals($result, '#NUM!');
} }
@ -76,22 +83,22 @@ class DateTimeTest extends \PHPUnit_Framework_TestCase
public function providerDATEVALUE() public function providerDATEVALUE()
{ {
return new \PhpSpreadhsheet\unitTests\TestDataFileIterator('rawTestData/Calculation/DateTime/DATEVALUE.data'); return new TestDataFileIterator('rawTestData/Calculation/DateTime/DATEVALUE.data');
} }
public function testDATEVALUEtoPHP() public function testDATEVALUEtoPHP()
{ {
\PHPExcel\Calculation\Functions::setReturnDateType(\PHPExcel\Calculation\Functions::RETURNDATE_PHP_NUMERIC); Functions::setReturnDateType(Functions::RETURNDATE_PHP_NUMERIC);
$result = \PHPExcel\Calculation\DateTime::DATEVALUE('2012-1-31'); $result = DateTime::DATEVALUE('2012-1-31');
\PHPExcel\Calculation\Functions::setReturnDateType(\PHPExcel\Calculation\Functions::RETURNDATE_EXCEL); Functions::setReturnDateType(Functions::RETURNDATE_EXCEL);
$this->assertEquals(1327968000, $result, null, 1E-8); $this->assertEquals(1327968000, $result, null, 1E-8);
} }
public function testDATEVALUEtoPHPObject() public function testDATEVALUEtoPHPObject()
{ {
\PHPExcel\Calculation\Functions::setReturnDateType(\PHPExcel\Calculation\Functions::RETURNDATE_PHP_OBJECT); Functions::setReturnDateType(Functions::RETURNDATE_PHP_OBJECT);
$result = \PHPExcel\Calculation\DateTime::DATEVALUE('2012-1-31'); $result = DateTime::DATEVALUE('2012-1-31');
\PHPExcel\Calculation\Functions::setReturnDateType(\PHPExcel\Calculation\Functions::RETURNDATE_EXCEL); Functions::setReturnDateType(Functions::RETURNDATE_EXCEL);
// Must return an object... // Must return an object...
$this->assertTrue(is_object($result)); $this->assertTrue(is_object($result));
// ... of the correct type // ... of the correct type
@ -113,7 +120,7 @@ class DateTimeTest extends \PHPUnit_Framework_TestCase
public function providerYEAR() public function providerYEAR()
{ {
return new \PhpSpreadhsheet\unitTests\TestDataFileIterator('rawTestData/Calculation/DateTime/YEAR.data'); return new TestDataFileIterator('rawTestData/Calculation/DateTime/YEAR.data');
} }
/** /**
@ -129,7 +136,7 @@ class DateTimeTest extends \PHPUnit_Framework_TestCase
public function providerMONTH() public function providerMONTH()
{ {
return new \PhpSpreadhsheet\unitTests\TestDataFileIterator('rawTestData/Calculation/DateTime/MONTH.data'); return new TestDataFileIterator('rawTestData/Calculation/DateTime/MONTH.data');
} }
/** /**
@ -145,7 +152,7 @@ class DateTimeTest extends \PHPUnit_Framework_TestCase
public function providerWEEKNUM() public function providerWEEKNUM()
{ {
return new \PhpSpreadhsheet\unitTests\TestDataFileIterator('rawTestData/Calculation/DateTime/WEEKNUM.data'); return new TestDataFileIterator('rawTestData/Calculation/DateTime/WEEKNUM.data');
} }
/** /**
@ -161,7 +168,7 @@ class DateTimeTest extends \PHPUnit_Framework_TestCase
public function providerWEEKDAY() public function providerWEEKDAY()
{ {
return new \PhpSpreadhsheet\unitTests\TestDataFileIterator('rawTestData/Calculation/DateTime/WEEKDAY.data'); return new TestDataFileIterator('rawTestData/Calculation/DateTime/WEEKDAY.data');
} }
/** /**
@ -177,7 +184,7 @@ class DateTimeTest extends \PHPUnit_Framework_TestCase
public function providerDAY() public function providerDAY()
{ {
return new \PhpSpreadhsheet\unitTests\TestDataFileIterator('rawTestData/Calculation/DateTime/DAY.data'); return new TestDataFileIterator('rawTestData/Calculation/DateTime/DAY.data');
} }
/** /**
@ -193,22 +200,22 @@ class DateTimeTest extends \PHPUnit_Framework_TestCase
public function providerTIME() public function providerTIME()
{ {
return new \PhpSpreadhsheet\unitTests\TestDataFileIterator('rawTestData/Calculation/DateTime/TIME.data'); return new TestDataFileIterator('rawTestData/Calculation/DateTime/TIME.data');
} }
public function testTIMEtoPHP() public function testTIMEtoPHP()
{ {
\PHPExcel\Calculation\Functions::setReturnDateType(\PHPExcel\Calculation\Functions::RETURNDATE_PHP_NUMERIC); Functions::setReturnDateType(Functions::RETURNDATE_PHP_NUMERIC);
$result = \PHPExcel\Calculation\DateTime::TIME(7, 30, 20); $result = DateTime::TIME(7, 30, 20);
\PHPExcel\Calculation\Functions::setReturnDateType(\PHPExcel\Calculation\Functions::RETURNDATE_EXCEL); Functions::setReturnDateType(Functions::RETURNDATE_EXCEL);
$this->assertEquals(27020, $result, null, 1E-8); $this->assertEquals(27020, $result, null, 1E-8);
} }
public function testTIMEtoPHPObject() public function testTIMEtoPHPObject()
{ {
\PHPExcel\Calculation\Functions::setReturnDateType(\PHPExcel\Calculation\Functions::RETURNDATE_PHP_OBJECT); Functions::setReturnDateType(Functions::RETURNDATE_PHP_OBJECT);
$result = \PHPExcel\Calculation\DateTime::TIME(7, 30, 20); $result = DateTime::TIME(7, 30, 20);
\PHPExcel\Calculation\Functions::setReturnDateType(\PHPExcel\Calculation\Functions::RETURNDATE_EXCEL); Functions::setReturnDateType(Functions::RETURNDATE_EXCEL);
// Must return an object... // Must return an object...
$this->assertTrue(is_object($result)); $this->assertTrue(is_object($result));
// ... of the correct type // ... of the correct type
@ -230,22 +237,22 @@ class DateTimeTest extends \PHPUnit_Framework_TestCase
public function providerTIMEVALUE() public function providerTIMEVALUE()
{ {
return new \PhpSpreadhsheet\unitTests\TestDataFileIterator('rawTestData/Calculation/DateTime/TIMEVALUE.data'); return new TestDataFileIterator('rawTestData/Calculation/DateTime/TIMEVALUE.data');
} }
public function testTIMEVALUEtoPHP() public function testTIMEVALUEtoPHP()
{ {
\PHPExcel\Calculation\Functions::setReturnDateType(\PHPExcel\Calculation\Functions::RETURNDATE_PHP_NUMERIC); Functions::setReturnDateType(Functions::RETURNDATE_PHP_NUMERIC);
$result = \PHPExcel\Calculation\DateTime::TIMEVALUE('7:30:20'); $result = DateTime::TIMEVALUE('7:30:20');
\PHPExcel\Calculation\Functions::setReturnDateType(\PHPExcel\Calculation\Functions::RETURNDATE_EXCEL); Functions::setReturnDateType(Functions::RETURNDATE_EXCEL);
$this->assertEquals(23420, $result, null, 1E-8); $this->assertEquals(23420, $result, null, 1E-8);
} }
public function testTIMEVALUEtoPHPObject() public function testTIMEVALUEtoPHPObject()
{ {
\PHPExcel\Calculation\Functions::setReturnDateType(\PHPExcel\Calculation\Functions::RETURNDATE_PHP_OBJECT); Functions::setReturnDateType(Functions::RETURNDATE_PHP_OBJECT);
$result = \PHPExcel\Calculation\DateTime::TIMEVALUE('7:30:20'); $result = DateTime::TIMEVALUE('7:30:20');
\PHPExcel\Calculation\Functions::setReturnDateType(\PHPExcel\Calculation\Functions::RETURNDATE_EXCEL); Functions::setReturnDateType(Functions::RETURNDATE_EXCEL);
// Must return an object... // Must return an object...
$this->assertTrue(is_object($result)); $this->assertTrue(is_object($result));
// ... of the correct type // ... of the correct type
@ -267,7 +274,7 @@ class DateTimeTest extends \PHPUnit_Framework_TestCase
public function providerHOUR() public function providerHOUR()
{ {
return new \PhpSpreadhsheet\unitTests\TestDataFileIterator('rawTestData/Calculation/DateTime/HOUR.data'); return new TestDataFileIterator('rawTestData/Calculation/DateTime/HOUR.data');
} }
/** /**
@ -283,7 +290,7 @@ class DateTimeTest extends \PHPUnit_Framework_TestCase
public function providerMINUTE() public function providerMINUTE()
{ {
return new \PhpSpreadhsheet\unitTests\TestDataFileIterator('rawTestData/Calculation/DateTime/MINUTE.data'); return new TestDataFileIterator('rawTestData/Calculation/DateTime/MINUTE.data');
} }
/** /**
@ -299,7 +306,7 @@ class DateTimeTest extends \PHPUnit_Framework_TestCase
public function providerSECOND() public function providerSECOND()
{ {
return new \PhpSpreadhsheet\unitTests\TestDataFileIterator('rawTestData/Calculation/DateTime/SECOND.data'); return new TestDataFileIterator('rawTestData/Calculation/DateTime/SECOND.data');
} }
/** /**
@ -315,7 +322,7 @@ class DateTimeTest extends \PHPUnit_Framework_TestCase
public function providerNETWORKDAYS() public function providerNETWORKDAYS()
{ {
return new \PhpSpreadhsheet\unitTests\TestDataFileIterator('rawTestData/Calculation/DateTime/NETWORKDAYS.data'); return new TestDataFileIterator('rawTestData/Calculation/DateTime/NETWORKDAYS.data');
} }
/** /**
@ -331,7 +338,7 @@ class DateTimeTest extends \PHPUnit_Framework_TestCase
public function providerWORKDAY() public function providerWORKDAY()
{ {
return new \PhpSpreadhsheet\unitTests\TestDataFileIterator('rawTestData/Calculation/DateTime/WORKDAY.data'); return new TestDataFileIterator('rawTestData/Calculation/DateTime/WORKDAY.data');
} }
/** /**
@ -347,22 +354,22 @@ class DateTimeTest extends \PHPUnit_Framework_TestCase
public function providerEDATE() public function providerEDATE()
{ {
return new \PhpSpreadhsheet\unitTests\TestDataFileIterator('rawTestData/Calculation/DateTime/EDATE.data'); return new TestDataFileIterator('rawTestData/Calculation/DateTime/EDATE.data');
} }
public function testEDATEtoPHP() public function testEDATEtoPHP()
{ {
\PHPExcel\Calculation\Functions::setReturnDateType(\PHPExcel\Calculation\Functions::RETURNDATE_PHP_NUMERIC); Functions::setReturnDateType(Functions::RETURNDATE_PHP_NUMERIC);
$result = \PHPExcel\Calculation\DateTime::EDATE('2012-1-26', -1); $result = DateTime::EDATE('2012-1-26', -1);
\PHPExcel\Calculation\Functions::setReturnDateType(\PHPExcel\Calculation\Functions::RETURNDATE_EXCEL); Functions::setReturnDateType(Functions::RETURNDATE_EXCEL);
$this->assertEquals(1324857600, $result, null, 1E-8); $this->assertEquals(1324857600, $result, null, 1E-8);
} }
public function testEDATEtoPHPObject() public function testEDATEtoPHPObject()
{ {
\PHPExcel\Calculation\Functions::setReturnDateType(\PHPExcel\Calculation\Functions::RETURNDATE_PHP_OBJECT); Functions::setReturnDateType(Functions::RETURNDATE_PHP_OBJECT);
$result = \PHPExcel\Calculation\DateTime::EDATE('2012-1-26', -1); $result = DateTime::EDATE('2012-1-26', -1);
\PHPExcel\Calculation\Functions::setReturnDateType(\PHPExcel\Calculation\Functions::RETURNDATE_EXCEL); Functions::setReturnDateType(Functions::RETURNDATE_EXCEL);
// Must return an object... // Must return an object...
$this->assertTrue(is_object($result)); $this->assertTrue(is_object($result));
// ... of the correct type // ... of the correct type
@ -384,22 +391,22 @@ class DateTimeTest extends \PHPUnit_Framework_TestCase
public function providerEOMONTH() public function providerEOMONTH()
{ {
return new \PhpSpreadhsheet\unitTests\TestDataFileIterator('rawTestData/Calculation/DateTime/EOMONTH.data'); return new TestDataFileIterator('rawTestData/Calculation/DateTime/EOMONTH.data');
} }
public function testEOMONTHtoPHP() public function testEOMONTHtoPHP()
{ {
\PHPExcel\Calculation\Functions::setReturnDateType(\PHPExcel\Calculation\Functions::RETURNDATE_PHP_NUMERIC); Functions::setReturnDateType(Functions::RETURNDATE_PHP_NUMERIC);
$result = \PHPExcel\Calculation\DateTime::EOMONTH('2012-1-26', -1); $result = DateTime::EOMONTH('2012-1-26', -1);
\PHPExcel\Calculation\Functions::setReturnDateType(\PHPExcel\Calculation\Functions::RETURNDATE_EXCEL); Functions::setReturnDateType(Functions::RETURNDATE_EXCEL);
$this->assertEquals(1325289600, $result, null, 1E-8); $this->assertEquals(1325289600, $result, null, 1E-8);
} }
public function testEOMONTHtoPHPObject() public function testEOMONTHtoPHPObject()
{ {
\PHPExcel\Calculation\Functions::setReturnDateType(\PHPExcel\Calculation\Functions::RETURNDATE_PHP_OBJECT); Functions::setReturnDateType(Functions::RETURNDATE_PHP_OBJECT);
$result = \PHPExcel\Calculation\DateTime::EOMONTH('2012-1-26', -1); $result = DateTime::EOMONTH('2012-1-26', -1);
\PHPExcel\Calculation\Functions::setReturnDateType(\PHPExcel\Calculation\Functions::RETURNDATE_EXCEL); Functions::setReturnDateType(Functions::RETURNDATE_EXCEL);
// Must return an object... // Must return an object...
$this->assertTrue(is_object($result)); $this->assertTrue(is_object($result));
// ... of the correct type // ... of the correct type
@ -421,7 +428,7 @@ class DateTimeTest extends \PHPUnit_Framework_TestCase
public function providerDATEDIF() public function providerDATEDIF()
{ {
return new \PhpSpreadhsheet\unitTests\TestDataFileIterator('rawTestData/Calculation/DateTime/DATEDIF.data'); return new TestDataFileIterator('rawTestData/Calculation/DateTime/DATEDIF.data');
} }
/** /**
@ -437,7 +444,7 @@ class DateTimeTest extends \PHPUnit_Framework_TestCase
public function providerDAYS360() public function providerDAYS360()
{ {
return new \PhpSpreadhsheet\unitTests\TestDataFileIterator('rawTestData/Calculation/DateTime/DAYS360.data'); return new TestDataFileIterator('rawTestData/Calculation/DateTime/DAYS360.data');
} }
/** /**
@ -453,6 +460,6 @@ class DateTimeTest extends \PHPUnit_Framework_TestCase
public function providerYEARFRAC() public function providerYEARFRAC()
{ {
return new \PhpSpreadhsheet\unitTests\TestDataFileIterator('rawTestData/Calculation/DateTime/YEARFRAC.data'); return new TestDataFileIterator('rawTestData/Calculation/DateTime/YEARFRAC.data');
} }
} }

View File

@ -27,7 +27,7 @@ class CodePageTest extends \PHPUnit_Framework_TestCase
$invalidCodePage = 12345; $invalidCodePage = 12345;
try { try {
$result = call_user_func(array('\PHPExcel\Shared\CodePage','numberToName'), $invalidCodePage); $result = call_user_func(array('\PHPExcel\Shared\CodePage','numberToName'), $invalidCodePage);
} catch (Exception $e) { } catch (\PHPExcel\Exception $e) {
$this->assertEquals($e->getMessage(), 'Unknown codepage: 12345'); $this->assertEquals($e->getMessage(), 'Unknown codepage: 12345');
return; return;
} }
@ -39,7 +39,7 @@ class CodePageTest extends \PHPUnit_Framework_TestCase
$unsupportedCodePage = 720; $unsupportedCodePage = 720;
try { try {
$result = call_user_func(array('\PHPExcel\Shared\CodePage','numberToName'), $unsupportedCodePage); $result = call_user_func(array('\PHPExcel\Shared\CodePage','numberToName'), $unsupportedCodePage);
} catch (Exception $e) { } catch (\PHPExcel\Exception $e) {
$this->assertEquals($e->getMessage(), 'Code page 720 not supported.'); $this->assertEquals($e->getMessage(), 'Code page 720 not supported.');
return; return;
} }

View File

@ -87,10 +87,10 @@
"2007-12-25", "2010-3-17", "YM", 2 "2007-12-25", "2010-3-17", "YM", 2
"2007-12-25", "2010-3-17", "YD", 82 "2007-12-25", "2010-3-17", "YD", 82
"2007-12-25", "2010-3-17", "MD", 20 "2007-12-25", "2010-3-17", "MD", 20
"19-12-1960", "26-01-2012" "Y", 51 "19-12-1960", "26-01-2012", "Y", 51
"19-12-1960", "26-01-2012" "M", 613 "19-12-1960", "26-01-2012", "M", 613
"19-12-1960", "26-01-2012" "D", 18665 "19-12-1960", "26-01-2012", "D", 18665
"19-12-1960", "26-01-2012" "YM", 1 "19-12-1960", "26-01-2012", "YM", 1
"19-12-1960", "26-01-2012" "YD", 38 "19-12-1960", "26-01-2012", "YD", 38
"19-12-1960", "26-01-2012" "MD", 7 "19-12-1960", "26-01-2012", "MD", 7
"19-12-1960", "12-12-2012" "Y", 50 "19-12-1960", "12-12-2012", "Y", 50

View File

@ -3,8 +3,8 @@
"31-Dec-1899", "#VALUE!" "31-Dec-1899", "#VALUE!"
"1-Jan-1900", 1 "1-Jan-1900", 1
"1900/2/28", 59 "1900/2/28", 59
"29-02-1900", 60 "29-02-1900", "#VALUE!"
"29th February 1900", 60 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date "29th February 1900", "#VALUE!" // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date
"1900/3/1", 61 "1900/3/1", 61
"13-12-1901", 713 "13-12-1901", 713
"14-12-1901", 714 "14-12-1901", 714
@ -35,11 +35,11 @@
"22 August 98", 36029 "22 August 98", 36029
"1st March 2007", 39142 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date "1st March 2007", 39142 // MS Excel will fail with a #VALUE return, but PHPExcel can parse this date
"The 1st day of March 2007", "#VALUE!" "The 1st day of March 2007", "#VALUE!"
"1 Jan", 41275 "1 Jan", 42370 // 01/01 of the current year
"31/12", 41639 "31/12", 42735 // 31/12 of the current year
"12/31", 11658 // Excel reads as 1st December 1931, not 31st December in current year "12/31", 11658 // Excel reads as 1st December 1931, not 31st December in current year
"5-JUL", 41460 "5-JUL", 42556 // 05/07 of the current year
"5 Jul", 41460 "5 Jul", 42556 // 05/07 of the current year
"12/2008", 39783 "12/2008", 39783
"10/32", 11963 "10/32", 11963
11, "#VALUE!" 11, "#VALUE!"

View File

@ -5,8 +5,8 @@
"11-Nov-1918 11:11", 11 "11-Nov-1918 11:11", 11
"11:59 PM", 23 "11:59 PM", 23
"23:59:59", 23 "23:59:59", 23
3600, 2 3600, 0
-3600, 0 -3600, "#NUM!"
7200, 3 7200, 0
65535, 19 65535, 0
"1 O'Clock", "#VALUE!" "1 O'Clock", "#VALUE!"

View File

@ -6,7 +6,7 @@
"11:59 PM", 59 "11:59 PM", 59
"23:59:59", 59 "23:59:59", 59
3600, 0 3600, 0
-3600, 0 -3600, "#NUM!"
12500, 28 12500, 0
65535, 12 65535, 0
"Half past 1 O'Clock", "#VALUE!" "Half past 1 O'Clock", "#VALUE!"

View File

@ -6,7 +6,7 @@
"11:59 PM", 0 "11:59 PM", 0
"23:59:59", 59 "23:59:59", 59
3600, 0 3600, 0
-3601, 59 -3601, "#NUM!"
12500, 20 12500, 0
65535, 15 65535, 0
"Half past 1 O'Clock", "#VALUE!" "Half past 1 O'Clock", "#VALUE!"