/** * {@inheritdoc} */ public function contains($value, callable $equalityComparer = null) { $equalityComparer = EqualityComparer::ensure($equalityComparer); if ($this->initialized() && $equalityComparer->hashCode($value) === $this->equalityComparer->hashCode($value)) { return $this->find($value, $equalityComparer); } return parent::contains($value, $equalityComparer); }
/** * @param callable|mixed $firstSelector * @param callable|mixed $secondSelector * @param callable $equalityComparer */ public function __construct($firstSelector, $secondSelector, callable $equalityComparer = null) { parent::__construct($firstSelector, $secondSelector); $this->equalityComparer = EqualityComparer::ensure($equalityComparer); }
/** * @param callable $equalityComparer * @param string $failMessage * * @return $this */ public function areDistinct(callable $equalityComparer = null, $failMessage = 'There are duplicate elements') { $equalityComparer = EqualityComparer::ensure($equalityComparer); $array = $this->valueAsEnumerable()->toArray(); for ($i = 0; $i < \count($array) - 1; ++$i) { for ($j = $i + 1; $j < \count($array); ++$j) { if ($equalityComparer->equals($array[$i], $array[$j])) { $this->fail($failMessage); } } } $this->pass(); return $this; }