mirror of
https://github.com/composer/composer
synced 2025-05-08 16:17:37 +00:00

Pool construction depends on the install request now, so only required packages get loaded, add some structure for future asynchronously loading composer repositories
108 lines
3.2 KiB
PHP
108 lines
3.2 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of Composer.
|
|
*
|
|
* (c) Nils Adermann <naderman@naderman.de>
|
|
* Jordi Boggiano <j.boggiano@seld.be>
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace Composer\Test\DependencyResolver;
|
|
|
|
use Composer\DependencyResolver\GenericRule;
|
|
use Composer\DependencyResolver\Rule;
|
|
use Composer\DependencyResolver\RuleSet;
|
|
use Composer\DependencyResolver\Pool;
|
|
use Composer\Package\BasePackage;
|
|
use Composer\Repository\ArrayRepository;
|
|
use Composer\TestCase;
|
|
|
|
class RuleTest extends TestCase
|
|
{
|
|
public function testGetHash()
|
|
{
|
|
$rule = new GenericRule(array(123), Rule::RULE_JOB_INSTALL, null);
|
|
|
|
$hash = unpack('ihash', md5('123', true));
|
|
$this->assertEquals($hash['hash'], $rule->getHash());
|
|
}
|
|
|
|
public function testEqualsForRulesWithDifferentHashes()
|
|
{
|
|
$rule = new GenericRule(array(1, 2), Rule::RULE_JOB_INSTALL, null);
|
|
$rule2 = new GenericRule(array(1, 3), Rule::RULE_JOB_INSTALL, null);
|
|
|
|
$this->assertFalse($rule->equals($rule2));
|
|
}
|
|
|
|
public function testEqualsForRulesWithDifferLiteralsQuantity()
|
|
{
|
|
$rule = new GenericRule(array(1, 12), Rule::RULE_JOB_INSTALL, null);
|
|
$rule2 = new GenericRule(array(1), Rule::RULE_JOB_INSTALL, null);
|
|
|
|
$this->assertFalse($rule->equals($rule2));
|
|
}
|
|
|
|
public function testEqualsForRulesWithSameLiterals()
|
|
{
|
|
$rule = new GenericRule(array(1, 12), Rule::RULE_JOB_INSTALL, null);
|
|
$rule2 = new GenericRule(array(1, 12), Rule::RULE_JOB_INSTALL, null);
|
|
|
|
$this->assertTrue($rule->equals($rule2));
|
|
}
|
|
|
|
public function testSetAndGetType()
|
|
{
|
|
$rule = new GenericRule(array(), Rule::RULE_JOB_INSTALL, null);
|
|
$rule->setType(RuleSet::TYPE_JOB);
|
|
|
|
$this->assertEquals(RuleSet::TYPE_JOB, $rule->getType());
|
|
}
|
|
|
|
public function testEnable()
|
|
{
|
|
$rule = new GenericRule(array(), Rule::RULE_JOB_INSTALL, null);
|
|
$rule->disable();
|
|
$rule->enable();
|
|
|
|
$this->assertTrue($rule->isEnabled());
|
|
$this->assertFalse($rule->isDisabled());
|
|
}
|
|
|
|
public function testDisable()
|
|
{
|
|
$rule = new GenericRule(array(), Rule::RULE_JOB_INSTALL, null);
|
|
$rule->enable();
|
|
$rule->disable();
|
|
|
|
$this->assertTrue($rule->isDisabled());
|
|
$this->assertFalse($rule->isEnabled());
|
|
}
|
|
|
|
public function testIsAssertions()
|
|
{
|
|
$rule = new GenericRule(array(1, 12), Rule::RULE_JOB_INSTALL, null);
|
|
$rule2 = new GenericRule(array(1), Rule::RULE_JOB_INSTALL, null);
|
|
|
|
$this->assertFalse($rule->isAssertion());
|
|
$this->assertTrue($rule2->isAssertion());
|
|
}
|
|
|
|
public function testPrettyString()
|
|
{
|
|
$pool = new Pool(array('stable' => BasePackage::STABILITY_STABLE));
|
|
$pool->setPackages(array(
|
|
$p1 = $this->getPackage('foo', '2.1'),
|
|
$p2 = $this->getPackage('baz', '1.1'),
|
|
));
|
|
$p1->setId(1);
|
|
$p2->setId(2);
|
|
|
|
$rule = new GenericRule(array($p1->getId(), -$p2->getId()), Rule::RULE_JOB_INSTALL, null);
|
|
|
|
$this->assertEquals('Install command rule (don\'t install baz 1.1|install foo 2.1)', $rule->getPrettyString($pool));
|
|
}
|
|
}
|