Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
9 / 9
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
DatePeriodFaker
100.00% covered (success)
100.00%
9 / 9
100.00% covered (success)
100.00%
2 / 2
5
100.00% covered (success)
100.00%
1 / 1
 supports
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 fakeFor
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
1 / 1
4
1<?php
2namespace Apie\Faker\Fakers;
3
4use Apie\Faker\Interfaces\ApieClassFaker;
5use DateInterval;
6use DatePeriod;
7use DateTimeImmutable;
8use DateTimeInterface;
9use Faker\Generator;
10use ReflectionClass;
11
12/** @implements ApieClassFaker<DatePeriod<DateTimeInterface, DateTimeInterface|null, int|null>> */
13class DatePeriodFaker implements ApieClassFaker
14{
15    public function supports(ReflectionClass $class): bool
16    {
17        return $class->name === DatePeriod::class;
18    }
19
20    /**
21     * @return DatePeriod<DateTimeImmutable, DateTimeInterface|null, int|null>
22     */
23    public function fakeFor(Generator $generator, ReflectionClass $class): DatePeriod
24    {
25        $options = ($generator->boolean() ? DatePeriod::EXCLUDE_START_DATE : 0)
26            | ($generator->boolean() ? DatePeriod::INCLUDE_END_DATE : 0);
27        return new DatePeriod(
28            $generator->fakeClass(DateTimeImmutable::class),
29            $generator->fakeClass(DateInterval::class),
30            $generator->boolean() ? $generator->fakeClass(DateTimeImmutable::class) : $generator->numberBetween(1, 10),
31            $options
32        );
33    }
34}