/** * 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); } }
/** * InMemoryMigrationStore constructor. */ public function __construct() { $this->store = new SortedArrayHashMap([], Comparator::from(function ($a, $b) { // order desc return -1 * Version::fromString($a)->compareTo(Version::fromString($b)); })); }
/** * @param callable|string $selector * @param Direction $direction * * @return \Cubiche\Core\Comparable\ComparatorInterface */ public static function by($selector, Direction $direction = null) { if (\is_string($selector)) { $selector = new Property($selector); } return Comparator::by($selector, $direction); }
/** * MigrationManager constructor. * * @param MigrationStoreInterface $migrationStore * @param string $migrationsDirectory */ public function __construct(MigrationStoreInterface $migrationStore, $migrationsDirectory) { $this->migrationStore = $migrationStore; $this->migrationsDirectory = $migrationsDirectory; $this->migrationsInFile = new SortedArrayHashMap([], Comparator::from(function ($v1, $v2) { return Version::fromString($v1)->compareTo(Version::fromString($v2)); })); }
/** * @param \Iterator $iterator * @param callable $comparator * * @return \ArrayIterator */ protected function sortIterator(\Iterator $iterator, callable $comparator = null) { $array = \iterator_to_array($iterator, true); \uasort($array, $comparator === null ? Comparator::defaultComparator() : $comparator); return new \ArrayIterator($array); }
/** * {@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} */ protected function comparator() { return Comparator::by(Criteria::property('age')); }
public function testCreate() { $this->given($comparator = new Comparator())->and($collection = new SortedArrayList($this->randomValues(10)))->and($reverseComparator = $comparator->reverse())->then()->list($collection)->isSortedUsing($comparator)->isNotSortedUsing($reverseComparator); }
/** * @param array|\Traversable $enumerable * @param callable $comparator */ public function __construct($enumerable, callable $comparator = null) { parent::__construct($enumerable); $this->comparator = Comparator::ensure($comparator); $this->sortedIterator = null; }
/** * {@inheritdoc} */ public function compare($a, $b) { return $this->direction()->value() * parent::compare($this->selector->__invoke($a), $this->selector->__invoke($b)); }
/** * Test by method. */ public function testBy() { $this->given($selector = function ($value) { return $value['foo']; })->when($comparator = Comparator::by($selector))->then()->object($comparator)->isInstanceOf(SelectorComparator::class)->object($comparator->selector())->isIdenticalTo($selector)->object($comparator->direction())->isEqualTo(Direction::ASC())->when($comparator = Comparator::by($selector, Direction::DESC()))->then()->object($comparator->direction())->isEqualTo(Direction::DESC()); }
/** * @param callable|mixed $firstSelector * @param callable|mixed $secondSelector * @param callable $comparator */ public function __construct($firstSelector, $secondSelector, callable $comparator = null) { parent::__construct($firstSelector, $secondSelector); $this->comparator = Comparator::ensure($comparator); }