private function assertOngoingPackageVersions(array $packages, $namespacesMinimum, $nonVersionsMaximum)
{
$nonVersions = 0;
$nonVersionsList = array();
$nameStack = array();
foreach ($packages as $package) {
$this->assertArrayHasKey('name', $package);
$this->assertArrayHasKey('version', $package);
$name = $package['name'];
$version = $package['version'];
if (!$this->isQuadripartiteVersionNumber($version)) {
$nonVersions++;
continue;
}
list($namespace, $nameVersion) = $this->splitName($name);
if ($nameVersion === null || $nameVersion !== $version) {
$nonVersionsList[] = $name;
$nonVersions++;
continue;
}
$this->assertSame($version, $nameVersion);
if (isset($nameStack[$namespace])) {
$comparison = version_compare($nameStack[$namespace], $version);
$message = sprintf("Check order of versions for package \"{$namespace}\", highter comes first, but got %s before %s", $nameStack[$namespace], $version);
$this->assertGreaterThan(0, $comparison, $message);
}
$nameStack[$namespace] = $nameVersion;
}
$this->assertGreaterThanOrEqual($namespacesMinimum, count($nameStack));
$message = sprintf('Too many non-versions (%s)', implode(', ', $nonVersionsList));
$this->assertLessThan($nonVersionsMaximum, $nonVersions, $message);
}