Pinq\Tests\Integration\Traversable\Complex\DateTimeTraversalTest::testGroupByDayOfWeekWithDateTimeKeys PHP Метод

testGroupByDayOfWeekWithDateTimeKeys() публичный Метод

public testGroupByDayOfWeekWithDateTimeKeys ( Pinq\ITraversable $traversable, array $data )
$traversable Pinq\ITraversable
$data array
    public function testGroupByDayOfWeekWithDateTimeKeys(\Pinq\ITraversable $traversable, array $data)
    {
        $datesGroupedByDayOfWeek = $traversable->indexBy(function (\DateTime $date) {
            return $date;
        })->select(function (\DateTime $date) {
            return $date->format('Y-m-d');
        })->groupBy(function ($string, \DateTime $date) {
            return $date->format('l');
        })->select(function (\Pinq\ITraversable $dateGroup) {
            return $dateGroup->keys()->asArray();
        })->asArray();
        $expectedDatesGroupedByDayOfWeek = [];
        foreach ($data as $date) {
            $dayOfWeek = $date->format('l');
            if (!isset($expectedDatesGroupedByDayOfWeek[$dayOfWeek])) {
                $expectedDatesGroupedByDayOfWeek[$dayOfWeek] = [];
            }
            $expectedDatesGroupedByDayOfWeek[$dayOfWeek][] = $date;
        }
        $this->assertSame($expectedDatesGroupedByDayOfWeek, $datesGroupedByDayOfWeek);
    }