public function sort()
{
if ($this->sortedPackages === null) {
$this->sortedPackages = [];
reset($this->unsortedPackages);
while (!empty($this->unsortedPackages)) {
$resolved = $this->sortPackage(key($this->unsortedPackages));
if ($resolved) {
reset($this->unsortedPackages);
} else {
next($this->unsortedPackages);
}
}
}
return $this->sortedPackages;
}
/** * @test * @dataProvider packagesAndDependenciesOrder * @param array $packages * @param array $expectedPackageOrder */ public function availablePackagesAreSortedAfterTheirDependencies($packages, $expectedPackageOrder) { $orderResolver = new PackageOrderResolver($packages, $packages); $sortedPackages = $orderResolver->sort(); $this->assertEquals($expectedPackageOrder, array_keys($sortedPackages), 'The packages have not been ordered according to their require!'); }