public function visitOrderBy(Segments\OrderBy $query) { $first = true; foreach ($query->getOrderings() as $orderFunction) { $direction = $this->resolvedParameters[$orderFunction->getIsAscendingId()] ? Direction::ASCENDING : Direction::DESCENDING; if ($first) { $this->traversable = $this->traversable->orderBy($this->resolvedParameters[$orderFunction->getProjectionFunction()->getCallableId()], $direction); $first = false; } else { $this->traversable = $this->traversable->thenBy($this->resolvedParameters[$orderFunction->getProjectionFunction()->getCallableId()], $direction); } } }
/** * @dataProvider names */ public function testThatOrderByDescendingIsEquivalentToOrderByWithDescendingDirection(\Pinq\ITraversable $names, array $data) { $function = function ($i) { return $i[0]; }; $orderedNames = $names->orderByDescending($function); $otherOrderedNames = $names->orderBy($function, \Pinq\Direction::DESCENDING); $this->assertSame($orderedNames->asArray(), $otherOrderedNames->asArray()); }