1
0
mirror of https://github.com/rlanvin/php-rrule.git synced 2025-02-21 10:54:14 +01:00

Fix tests for PHP 5.6 and PHP 7.1

Fix bugs related to microseconds in PHP 7.1
This commit is contained in:
rlanvin 2017-05-07 14:02:05 +01:00
parent e2f42382d4
commit 145c0817f7
4 changed files with 32 additions and 12 deletions

View File

@ -277,7 +277,16 @@ class RRule implements RRuleInterface
} }
} }
else { else {
$this->dtstart = new \DateTime(); $this->dtstart = new \DateTime(); // for PHP 7.1+ this contains microseconds which causes many problems
if ( version_compare(PHP_VERSION, '7.1.0') >= 0 ) {
// remove microseconds
$this->dtstart->setTime(
$this->dtstart->format('H'),
$this->dtstart->format('i'),
$this->dtstart->format('s'),
0
);
}
} }
// UNTIL (optional) // UNTIL (optional)

View File

@ -81,7 +81,17 @@ class RfcParser
if ( $dtstart ) { if ( $dtstart ) {
$nb_dtstart = 1; $nb_dtstart = 1;
$dtstart_type = 'tzid'; if ( is_string($dtstart) ) {
if ( strlen($dtstart) == 10 ) {
$dtstart_type = 'date';
}
else {
$dtstart_type = 'localtime';
}
}
else {
$dtstart_type = 'tzid';
}
$parts['DTSTART'] = RRule::parseDate($dtstart); $parts['DTSTART'] = RRule::parseDate($dtstart);
} }

View File

@ -1910,13 +1910,13 @@ class RRuleTest extends PHPUnit_Framework_TestCase
public function testRfcStringParserWithDtStart() public function testRfcStringParserWithDtStart()
{ {
$rrule = new RRule('RRULE:FREQ=YEARLY'); $rrule = new RRule('RRULE:FREQ=YEARLY');
$this->assertEquals(date_create(), $rrule[0]); $this->assertEquals(date_create()->format('Y-m-d'), $rrule[0]->format('Y-m-d'));
$rrule = new RRule('RRULE:FREQ=YEARLY', date_create('2017-01-01')); $rrule = new RRule('RRULE:FREQ=YEARLY', date_create('2017-01-01'));
$this->assertEquals(date_create('2017-01-01'), $rrule[0]); $this->assertEquals('2017-01-01', $rrule[0]->format('Y-m-d'));
$rrule = new RRule('RRULE:FREQ=YEARLY', '2017-01-01'); $rrule = new RRule('RRULE:FREQ=YEARLY', '2017-01-01');
$this->assertEquals(date_create('2017-01-01'), $rrule[0]); $this->assertEquals('2017-01-01', $rrule[0]->format('Y-m-d'));
try { try {
$rrule = new RRule("DTSTART:19970512\nRRULE:FREQ=YEARLY", date_create('2017-01-01')); $rrule = new RRule("DTSTART:19970512\nRRULE:FREQ=YEARLY", date_create('2017-01-01'));
@ -1968,7 +1968,7 @@ class RRuleTest extends PHPUnit_Framework_TestCase
$rule = @ new RRule($str); $rule = @ new RRule($str);
if ( $occurrences ) { if ( $occurrences ) {
$this->assertEquals($occurrences, $rule->getOccurrences()); $this->assertEquals($occurrences, $rule->getOccurrences(), '', 1);
} }
} }

View File

@ -439,12 +439,12 @@ class RSetTest extends PHPUnit_Framework_TestCase
))); )));
$this->assertCount(1, $rset->getOccurrences(1)); $this->assertCount(1, $rset->getOccurrences(1));
$this->assertEquals([date_create('2017-01-01')], $rset->getOccurrences(1)); $this->assertEquals(array(date_create('2017-01-01')), $rset->getOccurrences(1));
$this->assertCount(5, $rset->getOccurrences(5)); $this->assertCount(5, $rset->getOccurrences(5));
$this->assertEquals([ $this->assertEquals(array(
date_create('2017-01-01'),date_create('2017-01-02'),date_create('2017-01-03'), date_create('2017-01-01'),date_create('2017-01-02'),date_create('2017-01-03'),
date_create('2017-01-04'),date_create('2017-01-05') date_create('2017-01-04'),date_create('2017-01-05')
], $rset->getOccurrences(5)); ), $rset->getOccurrences(5));
try { try {
$rset->getOccurrences(); $rset->getOccurrences();
$this->fail('Expected exception (infinite rule) not thrown'); $this->fail('Expected exception (infinite rule) not thrown');
@ -463,7 +463,7 @@ class RSetTest extends PHPUnit_Framework_TestCase
$this->assertCount(1, $rset->getOccurrencesBetween('2017-01-01', null, 1)); $this->assertCount(1, $rset->getOccurrencesBetween('2017-01-01', null, 1));
$this->assertCount(1, $rset->getOccurrencesBetween('2017-02-01', '2017-12-31', 1)); $this->assertCount(1, $rset->getOccurrencesBetween('2017-02-01', '2017-12-31', 1));
$this->assertEquals([date_create('2017-02-01')], $rset->getOccurrencesBetween('2017-02-01', '2017-12-31', 1)); $this->assertEquals(array(date_create('2017-02-01')), $rset->getOccurrencesBetween('2017-02-01', '2017-12-31', 1));
$this->assertCount(5, $rset->getOccurrencesBetween('2017-01-01', null, 5)); $this->assertCount(5, $rset->getOccurrencesBetween('2017-01-01', null, 5));
try { try {
$rset->getOccurrencesBetween('2017-01-01', null); $rset->getOccurrencesBetween('2017-01-01', null);
@ -517,8 +517,9 @@ class RSetTest extends PHPUnit_Framework_TestCase
"RRULE:FREQ=DAILY;COUNT=3\nEXRULE:FREQ=DAILY;INTERVAL=2;COUNT=1" "RRULE:FREQ=DAILY;COUNT=3\nEXRULE:FREQ=DAILY;INTERVAL=2;COUNT=1"
); );
$this->assertEquals(array( $this->assertEquals(array(
date_create('+1day'), // get rid of microseconds for PHP 7.1+
date_create('+2day') date_create(date_create('+1day')->format('Y-m-d H:i:s')),
date_create(date_create('+2day')->format('Y-m-d H:i:s'))
), $rset->getOccurrences()); ), $rset->getOccurrences());
$rset = new RSet( $rset = new RSet(