/**
  * {@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);
 }
Exemple #2
0
 /**
  * @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;
 }