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);
}