/** * Test findOne. */ public function testFindOne() { $this->given($emptyDataSource = $this->emptyDataSource())->when($findResult = $emptyDataSource->findOne())->then->variable($findResult)->isNull(); $this->given($randomDataSource = $this->randomDataSource())->when($findResult = $randomDataSource->findOne())->then->variable($findResult)->isNotNull(); $this->given($datasource = $this->randomDataSource(Criteria::method('value')->gt(2), null, 1, 3))->when($findResult = $datasource->findOne())->then->integer($findResult->value())->isGreaterThan(2); $this->given($comparator = new Comparator(), $sortCriteria = new CallbackComparator(function ($a, $b) use($comparator) { return -1 * $comparator->compare($a, $b); }), $datasource = $this->randomDataSource(Criteria::method('value')->lt(10), $sortCriteria))->when($findResult = $datasource->findOne())->then->integer($findResult->value())->isEqualTo(9); }
/** * {@inheritdoc} */ public function sort(ComparatorInterface $criteria = null) { $elements = $this->collection->toArray(); if ($criteria === null) { $criteria = new Comparator(); } usort($elements, function ($a, $b) use($criteria) { return $criteria->compare($a, $b); }); $this->clear(); foreach ($elements as $element) { $this->add($element); } }
/** * {@inheritdoc} */ public function sort(ComparatorInterface $criteria = null) { if ($criteria === null) { $criteria = new Comparator(); } uksort($this->elements, function ($a, $b) use($criteria) { return $criteria->compare($a, $b); }); }
/** * {@inheritdoc} */ public function compare($a, $b) { return $this->direction()->value() * parent::compare($this->selector->__invoke($a), $this->selector->__invoke($b)); }