public function testGroupJoinToSelfWithCondition(\Pinq\ITraversable $traversable, array $data)
{
$joinedlastNames = $traversable->groupJoin($traversable)->onEquality(function ($outer) {
return $outer['firstName'][0];
}, function ($inner) {
return $inner['lastName'][0];
})->to(function ($person, \Pinq\ITraversable $joinedPeople) {
return $person['firstName'] . '{' . $joinedPeople->implode(',', function ($person) {
return $person['lastName'];
}) . '}';
})->implode(':');
$this->assertEquals('Zoe{}:Alex{}:Daniel{Denali,Desopolous,Dekresta}:Casy{}:Dave{Denali,Desopolous,Dekresta}:' . 'Hugo{}:Sandy{}:Beth{Black,Baronksy}:David{Denali,Desopolous,Dekresta}:Daniel{Denali,Desopolous,Dekresta}', $joinedlastNames);
}