forked from phpstan/phpstan-src
-
Notifications
You must be signed in to change notification settings - Fork 0
/
date-period-return-types.php
35 lines (28 loc) · 1.26 KB
/
date-period-return-types.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php declare(strict_types=1);
use function PHPStan\Testing\assertType;
$start = new DateTime('2012-07-01');
$interval = new DateInterval('P7D');
$end = new DateTime('2012-07-31');
$recurrences = 4;
$iso = 'R4/2012-07-01T00:00:00Z/P7D';
$datePeriodList = [];
$datePeriod = new DatePeriod($start, $interval, $end);
assertType(\DatePeriod::class . '<DateTimeInterface, null>', $datePeriod);
assertType(\DateTimeInterface::class, $datePeriod->getEndDate());
assertType('null', $datePeriod->getRecurrences());
$datePeriodList[] = $datePeriod;
$datePeriod = new DatePeriod($start, $interval, $recurrences);
assertType(\DatePeriod::class . '<null, int>', $datePeriod);
assertType('null', $datePeriod->getEndDate());
assertType('int', $datePeriod->getRecurrences());
$datePeriodList[] = $datePeriod;
$datePeriod = new DatePeriod($iso);
assertType(\DatePeriod::class . '<null, int>', $datePeriod);
assertType('null', $datePeriod->getEndDate());
assertType('int', $datePeriod->getRecurrences());
$datePeriodList[] = $datePeriod;
/** @var DatePeriod $datePeriod */
$datePeriod = $datePeriodList[random_int(0, 2)];
assertType(\DatePeriod::class, $datePeriod);
assertType(\DateTimeInterface::class . '|null', $datePeriod->getEndDate());
assertType('int|null', $datePeriod->getRecurrences());