1
0
Fork 0

Added hasPackage and removePackage methods to the ArrayRepository

pull/19/head
everzet 2011-09-25 20:57:58 +03:00
parent 2fc0699492
commit 28d9df7da6
2 changed files with 65 additions and 1 deletions

View File

@ -23,6 +23,26 @@ class ArrayRepository implements RepositoryInterface
{ {
protected $packages; protected $packages;
/**
* Checks if specified package in this repository.
*
* @param PackageInterface $package package instance
*
* @return Boolean
*/
public function hasPackage(PackageInterface $package)
{
$packageId = $package->getUniqueName();
foreach ($this->getPackages() as $repoPackage) {
if ($packageId === $repoPackage->getUniqueName()) {
return true;
}
}
return false;
}
/** /**
* Adds a new package to the repository * Adds a new package to the repository
* *
@ -37,6 +57,24 @@ class ArrayRepository implements RepositoryInterface
$this->packages[] = $package; $this->packages[] = $package;
} }
/**
* Removes package from repository.
*
* @param PackageInterface $package package instance
*/
public function removePackage(PackageInterface $package)
{
$packageId = $package->getUniqueName();
foreach ($this->getPackages() as $key => $repoPackage) {
if ($packageId === $repoPackage->getUniqueName()) {
array_splice($this->packages, $key, 1);
return;
}
}
}
/** /**
* Returns all contained packages * Returns all contained packages
* *

View File

@ -17,11 +17,37 @@ use Composer\Package\MemoryPackage;
class ArrayRepositoryTest extends \PHPUnit_Framework_TestCase class ArrayRepositoryTest extends \PHPUnit_Framework_TestCase
{ {
public function testAddLiteral() public function testAddPackage()
{ {
$repo = new ArrayRepository; $repo = new ArrayRepository;
$repo->addPackage(new MemoryPackage('foo', '1')); $repo->addPackage(new MemoryPackage('foo', '1'));
$this->assertEquals(1, count($repo)); $this->assertEquals(1, count($repo));
} }
public function testRemovePackage()
{
$package = new MemoryPackage('bar', '2');
$repo = new ArrayRepository;
$repo->addPackage(new MemoryPackage('foo', '1'));
$repo->addPackage($package);
$this->assertEquals(2, count($repo));
$repo->removePackage(new MemoryPackage('foo', '1'));
$this->assertEquals(1, count($repo));
$this->assertEquals(array($package), $repo->getPackages());
}
public function testHasPackage()
{
$repo = new ArrayRepository;
$repo->addPackage(new MemoryPackage('foo', '1'));
$repo->addPackage(new MemoryPackage('bar', '2'));
$this->assertTrue($repo->hasPackage(new MemoryPackage('foo', '1')));
$this->assertFalse($repo->hasPackage(new MemoryPackage('bar', '1')));
}
} }