Skip to content

Commit

Permalink
Fix PHP8.1 tests
Browse files Browse the repository at this point in the history
  • Loading branch information
valentinbonneaud committed Dec 15, 2021
1 parent bb55eac commit fca20ff
Show file tree
Hide file tree
Showing 3 changed files with 96 additions and 28 deletions.
53 changes: 40 additions & 13 deletions tests/VObject/Recur/FastForwardBeforeTest.php
Expand Up @@ -282,39 +282,51 @@ public function testFastForwardBeforeMonthly31thDay()

$this->fastForward($rrule, $ffDate);

$expected = (new DateTime('midnight', new DateTimeZone('America/New_York')))
$expected = (new \DateTime('midnight', new DateTimeZone($timezone)))
->setDate(18000, 1, 31)
->getTimestamp();
$this->assertEquals($expected, $rrule->current()->getTimestamp());

// march
$rrule->next();
$expected += (29 + 31) * 24 * 60 * 60;
$expected = (new \DateTime('1970-01-31 00:00:00', new DateTimeZone($timezone)))
->setDate(18000, 3, 31)
->getTimestamp();
$this->assertEquals($expected, $rrule->current()->getTimestamp());

// may
$rrule->next();
$expected += (30 + 31) * 24 * 60 * 60;
$expected = (new \DateTime('1970-01-31 00:00:00', new DateTimeZone($timezone)))
->setDate(18000, 5, 31)
->getTimestamp();
$this->assertEquals($expected, $rrule->current()->getTimestamp());

// july
$rrule->next();
$expected += (30 + 31) * 24 * 60 * 60;
$expected = (new \DateTime('1970-01-31 00:00:00', new DateTimeZone($timezone)))
->setDate(18000, 7, 31)
->getTimestamp();
$this->assertEquals($expected, $rrule->current()->getTimestamp());

// august
$rrule->next();
$expected += 31 * 24 * 60 * 60;
$expected = (new \DateTime('1970-01-31 00:00:00', new DateTimeZone($timezone)))
->setDate(18000, 8, 31)
->getTimestamp();
$this->assertEquals($expected, $rrule->current()->getTimestamp());

// october
$rrule->next();
$expected += (30 + 31) * 24 * 60 * 60;
$expected = (new \DateTime('1970-01-31 00:00:00', new DateTimeZone($timezone)))
->setDate(18000, 10, 31)
->getTimestamp();
$this->assertEquals($expected, $rrule->current()->getTimestamp());

// december
$rrule->next();
$expected += (30 + 31) * 24 * 60 * 60;
$expected = (new \DateTime('1970-01-31 00:00:00', new DateTimeZone($timezone)))
->setDate(18000, 12, 31)
->getTimestamp();
$this->assertEquals($expected, $rrule->current()->getTimestamp());
}

Expand All @@ -336,37 +348,52 @@ public function testFastForwardBeforeMonthlyAdvanced()
$this->assertEquals($expected, $rrule->current()->getTimestamp());

// tuesday
$expected += 8 * 24 * 60 * 60;
$expected = (new \DateTime('1970-01-31 00:00:00', new DateTimeZone($timezone)))
->setDate(8000, 1, 11)
->getTimestamp();
$rrule->next();
$this->assertEquals($expected, $rrule->current()->getTimestamp());

// wednesday
$expected += 8 * 24 * 60 * 60;
$expected = (new \DateTime('1970-01-31 00:00:00', new DateTimeZone($timezone)))
->setDate(8000, 1, 19)
->getTimestamp();
$rrule->next();
$this->assertEquals($expected, $rrule->current()->getTimestamp());

// thursday
$expected += 8 * 24 * 60 * 60;
$expected = (new \DateTime('1970-01-31 00:00:00', new DateTimeZone($timezone)))
->setDate(8000, 1, 27)
->getTimestamp();
$rrule->next();
$this->assertEquals($expected, $rrule->current()->getTimestamp());

// monday march
$expected += (29 + 10) * 24 * 60 * 60;
$expected = (new \DateTime('1970-01-31 00:00:00', new DateTimeZone($timezone)))
->setDate(8000, 3, 6)
->getTimestamp();
$rrule->next();
$this->assertEquals($expected, $rrule->current()->getTimestamp());

// tuesday
$expected += 8 * 24 * 60 * 60;
$expected = (new \DateTime('1970-01-31 00:00:00', new DateTimeZone($timezone)))
->setDate(8000, 3, 14)
->getTimestamp();
$rrule->next();
$this->assertEquals($expected, $rrule->current()->getTimestamp());

// wednesday (this month starts on wednesday so that's just the next day)
$expected += 1 * 24 * 60 * 60;
$expected = (new \DateTime('1970-01-31 00:00:00', new DateTimeZone($timezone)))
->setDate(8000, 3, 15)
->getTimestamp();
$rrule->next();
$this->assertEquals($expected, $rrule->current()->getTimestamp());

// thursday
$expected += 8 * 24 * 60 * 60;
$expected = (new \DateTime('1970-01-31 00:00:00', new DateTimeZone($timezone)))
->setDate(8000, 3, 23)
->getTimestamp();
$rrule->next();
$this->assertEquals($expected, $rrule->current()->getTimestamp());
}
Expand Down
51 changes: 39 additions & 12 deletions tests/VObject/Recur/FastForwardTest.php
Expand Up @@ -261,32 +261,45 @@ public function testFastForwardMonthly31thDay()

// march
$rrule->next();
$expected += (29 + 31) * 24 * 60 * 60;
$expected = (new DateTime('midnight', new DateTimeZone('America/New_York')))
->setDate(18000, 3, 31)
->getTimestamp();
$this->assertEquals($expected, $rrule->current()->getTimestamp());

// may
$rrule->next();
$expected += (30 + 31) * 24 * 60 * 60;
$expected = (new DateTime('midnight', new DateTimeZone('America/New_York')))
->setDate(18000, 5, 31)
->getTimestamp();
$this->assertEquals($expected, $rrule->current()->getTimestamp());

// july
$rrule->next();
$expected += (30 + 31) * 24 * 60 * 60;
$expected = (new DateTime('midnight', new DateTimeZone('America/New_York')))
->setDate(18000, 7, 31)
->getTimestamp();
$this->assertEquals($expected, $rrule->current()->getTimestamp());

// august
$rrule->next();
$expected += 31 * 24 * 60 * 60;
$expected = (new DateTime('midnight', new DateTimeZone('America/New_York')))
->setDate(18000, 8, 31)
->getTimestamp();
$this->assertEquals($expected, $rrule->current()->getTimestamp());

// october
$rrule->next();
$expected += (30 + 31) * 24 * 60 * 60;
$expected = (new DateTime('midnight', new DateTimeZone('America/New_York')))
->setDate(18000, 10, 31)
->getTimestamp();
$this->assertEquals($expected, $rrule->current()->getTimestamp());

// december
$rrule->next();
$expected += (30 + 31) * 24 * 60 * 60;
$expected = (new DateTime('midnight', new DateTimeZone('America/New_York')))
->setDate(18000, 12, 31)
->getTimestamp();
$this->assertEquals($expected, $rrule->current()->getTimestamp());
}

Expand All @@ -307,37 +320,51 @@ public function testFastForwardMonthlyAdvanced()
$this->assertEquals($expected, $rrule->current()->getTimestamp());

// tuesday
$expected += 8 * 24 * 60 * 60;
$expected = (new DateTime('midnight', new DateTimeZone($timezone)))
->setDate(8000, 1, 11)
->getTimestamp();
$rrule->next();
$this->assertEquals($expected, $rrule->current()->getTimestamp());

// wednesday
$expected += 8 * 24 * 60 * 60;
$expected = (new DateTime('midnight', new DateTimeZone($timezone)))
->setDate(8000, 1, 19)
->getTimestamp();
$rrule->next();
$this->assertEquals($expected, $rrule->current()->getTimestamp());

// thursday
$expected += 8 * 24 * 60 * 60;
$expected = (new DateTime('midnight', new DateTimeZone($timezone)))
->setDate(8000, 1, 27)
->getTimestamp();
$rrule->next();
$this->assertEquals($expected, $rrule->current()->getTimestamp());

// monday march
$expected += (29 + 10) * 24 * 60 * 60;
$expected = (new DateTime('midnight', new DateTimeZone($timezone)))
->setDate(8000, 3, 6)
->getTimestamp();
$rrule->next();
$this->assertEquals($expected, $rrule->current()->getTimestamp());

// tuesday
$expected += 8 * 24 * 60 * 60;
$expected = (new DateTime('midnight', new DateTimeZone($timezone)))
->setDate(8000, 3, 14)
->getTimestamp();
$rrule->next();
$this->assertEquals($expected, $rrule->current()->getTimestamp());

// wednesday (this month starts on wednesday so that's just the next day)
$expected += 1 * 24 * 60 * 60;
$expected = (new DateTime('midnight', new DateTimeZone($timezone)))
->setDate(8000, 3, 15)
->getTimestamp();
$rrule->next();
$this->assertEquals($expected, $rrule->current()->getTimestamp());

// thursday
$expected += 8 * 24 * 60 * 60;
$expected = (new DateTime('midnight', new DateTimeZone($timezone)))
->setDate(8000, 3, 23)
->getTimestamp();
$rrule->next();
$this->assertEquals($expected, $rrule->current()->getTimestamp());
}
Expand Down
20 changes: 17 additions & 3 deletions tests/VObject/Recur/FastForwardToEndTest.php
Expand Up @@ -186,9 +186,7 @@ public function testFastForwardToEndUntilMonthlyBasic()
}

/**
* FIXME fails in <=PHP 7.1.
*
* @requires PHP 7.2
* @requires PHP < 8.1
*/
public function testFastForwardToEndCountMonthly31thDay()
{
Expand All @@ -204,6 +202,22 @@ public function testFastForwardToEndCountMonthly31thDay()
$this->assertEquals($expected, $rrule->current()->getTimestamp());
}

/**
* @requires PHP >= 8.1
*/
public function testFastForwardToEndCountMonthly31thDayPHP81()
{
$startDate = new \DateTime('1970-01-31 00:00:00', new \DateTimeZone('America/New_York'));
$rrule = new RRuleIterator('FREQ=MONTHLY;COUNT=10000', $startDate);

// We do not enforce the timing in case of a count rule as we cannot optimize it
$this->fastForwardToEnd($rrule, false);

$expected = (new DateTime('midnight', new DateTimeZone('America/New_York')))
->setDate(3398, 7, 31);
$this->assertEquals($expected->getTimestamp(), $rrule->current()->getTimestamp());
}

public function testFastForwardToEndUntilMonthly31thDay()
{
$startDate = new \DateTime('1970-01-31 00:00:00', new \DateTimeZone('America/New_York'));
Expand Down

0 comments on commit fca20ff

Please sign in to comment.