Skip to content

Commit

Permalink
Add type tests for HigherOrderCollectionProxy in LazyCollection
Browse files Browse the repository at this point in the history
  • Loading branch information
Voltra committed Aug 17, 2024
1 parent c6384ad commit b616578
Showing 1 changed file with 42 additions and 42 deletions.
84 changes: 42 additions & 42 deletions types/Support/LazyCollection.php
Original file line number Diff line number Diff line change
Expand Up @@ -859,75 +859,75 @@ class CustomLazyCollection extends LazyCollection
}


class Animal
class LazyAnimal
{
}
class Tiger extends Animal
class LazyTiger extends LazyAnimal
{
}
class Lion extends Animal
class LazyLion extends LazyAnimal
{
}
class Zebra extends Animal
class LazyZebra extends LazyAnimal
{
}

class Zoo
class LazyZoo
{
/**
* @var \Illuminate\Support\Collection<int, Animal>
* @var \Illuminate\Support\Collection<int, LazyAnimal>
*/
private Collection $animals;

public function __construct()
{
$this->animals = collect([
new Tiger,
new Lion,
new Zebra,
new LazyTiger,
new LazyLion,
new LazyZebra,
]);
}

/**
* @return \Illuminate\Support\LazyCollection<int, Animal>
* @return \Illuminate\Support\LazyCollection<int, LazyAnimal>
*/
public function getWithoutZebras(): LazyCollection
{
return $this->animals->lazy()->filter(fn (Animal $animal) => ! $animal instanceof Zebra);
return $this->animals->lazy()->filter(fn (LazyAnimal $animal) => ! $animal instanceof LazyZebra);
}
}

$zoo = new Zoo();
$zoo = new LazyZoo();

$coll = $zoo->getWithoutZebras();

assertType('Illuminate\Support\LazyCollection<int, Animal>', $coll);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, Animal>', $coll->average);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, Animal>', $coll->avg);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, Animal>', $coll->contains);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, Animal>', $coll->doesntContain);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, Animal>', $coll->each);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, Animal>', $coll->every);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, Animal>', $coll->filter);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, Animal>', $coll->first);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, Animal>', $coll->flatMap);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, Animal>', $coll->groupBy);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, Animal>', $coll->keyBy);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, Animal>', $coll->map);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, Animal>', $coll->max);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, Animal>', $coll->min);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, Animal>', $coll->partition);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, Animal>', $coll->percentage);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, Animal>', $coll->reject);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, Animal>', $coll->skipUntil);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, Animal>', $coll->skipWhile);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, Animal>', $coll->some);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, Animal>', $coll->sortBy);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, Animal>', $coll->sortByDesc);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, Animal>', $coll->sum);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, Animal>', $coll->takeUntil);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, Animal>', $coll->takeWhile);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, Animal>', $coll->unique);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, Animal>', $coll->unless);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, Animal>', $coll->until);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, Animal>', $coll->when);
assertType('Illuminate\Support\LazyCollection<int, LazyAnimal>', $coll);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, LazyAnimal>', $coll->average);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, LazyAnimal>', $coll->avg);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, LazyAnimal>', $coll->contains);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, LazyAnimal>', $coll->doesntContain);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, LazyAnimal>', $coll->each);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, LazyAnimal>', $coll->every);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, LazyAnimal>', $coll->filter);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, LazyAnimal>', $coll->first);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, LazyAnimal>', $coll->flatMap);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, LazyAnimal>', $coll->groupBy);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, LazyAnimal>', $coll->keyBy);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, LazyAnimal>', $coll->map);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, LazyAnimal>', $coll->max);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, LazyAnimal>', $coll->min);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, LazyAnimal>', $coll->partition);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, LazyAnimal>', $coll->percentage);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, LazyAnimal>', $coll->reject);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, LazyAnimal>', $coll->skipUntil);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, LazyAnimal>', $coll->skipWhile);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, LazyAnimal>', $coll->some);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, LazyAnimal>', $coll->sortBy);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, LazyAnimal>', $coll->sortByDesc);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, LazyAnimal>', $coll->sum);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, LazyAnimal>', $coll->takeUntil);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, LazyAnimal>', $coll->takeWhile);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, LazyAnimal>', $coll->unique);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, LazyAnimal>', $coll->unless);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, LazyAnimal>', $coll->until);
assertType('Illuminate\Support\HigherOrderCollectionProxy<int, LazyAnimal>', $coll->when);

0 comments on commit b616578

Please sign in to comment.