|
@@ -13,22 +13,29 @@
|
|
namespace Composer\Test\DependencyResolver;
|
|
namespace Composer\Test\DependencyResolver;
|
|
|
|
|
|
use Composer\DependencyResolver\Rule;
|
|
use Composer\DependencyResolver\Rule;
|
|
-use Composer\DependencyResolver\Literal;
|
|
|
|
|
|
+use Composer\DependencyResolver\Pool;
|
|
|
|
+use Composer\Repository\ArrayRepository;
|
|
use Composer\Test\TestCase;
|
|
use Composer\Test\TestCase;
|
|
|
|
|
|
class RuleTest extends TestCase
|
|
class RuleTest extends TestCase
|
|
{
|
|
{
|
|
|
|
+ protected $pool;
|
|
|
|
+
|
|
|
|
+ public function setUp()
|
|
|
|
+ {
|
|
|
|
+ $this->pool = new Pool;
|
|
|
|
+ }
|
|
|
|
+
|
|
public function testGetHash()
|
|
public function testGetHash()
|
|
{
|
|
{
|
|
- $rule = new Rule(array(), 'job1', null);
|
|
|
|
- $rule->ruleHash = '123';
|
|
|
|
|
|
+ $rule = new Rule($this->pool, array(123), 'job1', null);
|
|
|
|
|
|
- $this->assertEquals('123', $rule->getHash());
|
|
|
|
|
|
+ $this->assertEquals(substr(md5('123'), 0, 5), $rule->getHash());
|
|
}
|
|
}
|
|
|
|
|
|
public function testSetAndGetId()
|
|
public function testSetAndGetId()
|
|
{
|
|
{
|
|
- $rule = new Rule(array(), 'job1', null);
|
|
|
|
|
|
+ $rule = new Rule($this->pool, array(), 'job1', null);
|
|
$rule->setId(666);
|
|
$rule->setId(666);
|
|
|
|
|
|
$this->assertEquals(666, $rule->getId());
|
|
$this->assertEquals(666, $rule->getId());
|
|
@@ -36,73 +43,31 @@ class RuleTest extends TestCase
|
|
|
|
|
|
public function testEqualsForRulesWithDifferentHashes()
|
|
public function testEqualsForRulesWithDifferentHashes()
|
|
{
|
|
{
|
|
- $rule = new Rule(array(), 'job1', null);
|
|
|
|
- $rule->ruleHash = '123';
|
|
|
|
-
|
|
|
|
- $rule2 = new Rule(array(), 'job1', null);
|
|
|
|
- $rule2->ruleHash = '321';
|
|
|
|
-
|
|
|
|
- $this->assertFalse($rule->equals($rule2));
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public function testEqualsForRulesWithDifferentLiterals()
|
|
|
|
- {
|
|
|
|
- $literal = $this->getLiteralMock();
|
|
|
|
- $literal->expects($this->any())
|
|
|
|
- ->method('getId')
|
|
|
|
- ->will($this->returnValue(1));
|
|
|
|
- $rule = new Rule(array($literal), 'job1', null);
|
|
|
|
- $rule->ruleHash = '123';
|
|
|
|
-
|
|
|
|
- $literal = $this->getLiteralMock();
|
|
|
|
- $literal->expects($this->any())
|
|
|
|
- ->method('getId')
|
|
|
|
- ->will($this->returnValue(12));
|
|
|
|
- $rule2 = new Rule(array($literal), 'job1', null);
|
|
|
|
- $rule2->ruleHash = '123';
|
|
|
|
|
|
+ $rule = new Rule($this->pool, array(1, 2), 'job1', null);
|
|
|
|
+ $rule2 = new Rule($this->pool, array(1, 3), 'job1', null);
|
|
|
|
|
|
$this->assertFalse($rule->equals($rule2));
|
|
$this->assertFalse($rule->equals($rule2));
|
|
}
|
|
}
|
|
|
|
|
|
public function testEqualsForRulesWithDifferLiteralsQuantity()
|
|
public function testEqualsForRulesWithDifferLiteralsQuantity()
|
|
{
|
|
{
|
|
- $literal = $this->getLiteralMock();
|
|
|
|
- $literal->expects($this->any())
|
|
|
|
- ->method('getId')
|
|
|
|
- ->will($this->returnValue(1));
|
|
|
|
- $literal2 = $this->getLiteralMock();
|
|
|
|
- $literal2->expects($this->any())
|
|
|
|
- ->method('getId')
|
|
|
|
- ->will($this->returnValue(12));
|
|
|
|
-
|
|
|
|
- $rule = new Rule(array($literal, $literal2), 'job1', null);
|
|
|
|
- $rule->ruleHash = '123';
|
|
|
|
- $rule2 = new Rule(array($literal), 'job1', null);
|
|
|
|
- $rule2->ruleHash = '123';
|
|
|
|
|
|
+ $rule = new Rule($this->pool, array(1, 12), 'job1', null);
|
|
|
|
+ $rule2 = new Rule($this->pool, array(1), 'job1', null);
|
|
|
|
|
|
$this->assertFalse($rule->equals($rule2));
|
|
$this->assertFalse($rule->equals($rule2));
|
|
}
|
|
}
|
|
|
|
|
|
- public function testEqualsForRulesWithThisSameLiterals()
|
|
|
|
|
|
+ public function testEqualsForRulesWithSameLiterals()
|
|
{
|
|
{
|
|
- $literal = $this->getLiteralMock();
|
|
|
|
- $literal->expects($this->any())
|
|
|
|
- ->method('getId')
|
|
|
|
- ->will($this->returnValue(1));
|
|
|
|
- $literal2 = $this->getLiteralMock();
|
|
|
|
- $literal2->expects($this->any())
|
|
|
|
- ->method('getId')
|
|
|
|
- ->will($this->returnValue(12));
|
|
|
|
-
|
|
|
|
- $rule = new Rule(array($literal, $literal2), 'job1', null);
|
|
|
|
- $rule2 = new Rule(array($literal, $literal2), 'job1', null);
|
|
|
|
|
|
+ $rule = new Rule($this->pool, array(1, 12), 'job1', null);
|
|
|
|
+ $rule2 = new Rule($this->pool, array(1, 12), 'job1', null);
|
|
|
|
|
|
$this->assertTrue($rule->equals($rule2));
|
|
$this->assertTrue($rule->equals($rule2));
|
|
}
|
|
}
|
|
|
|
|
|
public function testSetAndGetType()
|
|
public function testSetAndGetType()
|
|
{
|
|
{
|
|
- $rule = new Rule(array(), 'job1', null);
|
|
|
|
|
|
+ $rule = new Rule($this->pool, array(), 'job1', null);
|
|
$rule->setType('someType');
|
|
$rule->setType('someType');
|
|
|
|
|
|
$this->assertEquals('someType', $rule->getType());
|
|
$this->assertEquals('someType', $rule->getType());
|
|
@@ -110,7 +75,7 @@ class RuleTest extends TestCase
|
|
|
|
|
|
public function testEnable()
|
|
public function testEnable()
|
|
{
|
|
{
|
|
- $rule = new Rule(array(), 'job1', null);
|
|
|
|
|
|
+ $rule = new Rule($this->pool, array(), 'job1', null);
|
|
$rule->disable();
|
|
$rule->disable();
|
|
$rule->enable();
|
|
$rule->enable();
|
|
|
|
|
|
@@ -120,7 +85,7 @@ class RuleTest extends TestCase
|
|
|
|
|
|
public function testDisable()
|
|
public function testDisable()
|
|
{
|
|
{
|
|
- $rule = new Rule(array(), 'job1', null);
|
|
|
|
|
|
+ $rule = new Rule($this->pool, array(), 'job1', null);
|
|
$rule->enable();
|
|
$rule->enable();
|
|
$rule->disable();
|
|
$rule->disable();
|
|
|
|
|
|
@@ -128,24 +93,10 @@ class RuleTest extends TestCase
|
|
$this->assertFalse($rule->isEnabled());
|
|
$this->assertFalse($rule->isEnabled());
|
|
}
|
|
}
|
|
|
|
|
|
- public function testSetWeak()
|
|
|
|
- {
|
|
|
|
- $rule = new Rule(array(), 'job1', null);
|
|
|
|
- $rule->setWeak(true);
|
|
|
|
-
|
|
|
|
- $rule2 = new Rule(array(), 'job1', null);
|
|
|
|
- $rule2->setWeak(false);
|
|
|
|
-
|
|
|
|
- $this->assertTrue($rule->isWeak());
|
|
|
|
- $this->assertFalse($rule2->isWeak());
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
public function testIsAssertions()
|
|
public function testIsAssertions()
|
|
{
|
|
{
|
|
- $literal = $this->getLiteralMock();
|
|
|
|
- $literal2 = $this->getLiteralMock();
|
|
|
|
- $rule = new Rule(array($literal, $literal2), 'job1', null);
|
|
|
|
- $rule2 = new Rule(array($literal), 'job1', null);
|
|
|
|
|
|
+ $rule = new Rule($this->pool, array(1, 12), 'job1', null);
|
|
|
|
+ $rule2 = new Rule($this->pool, array(1), 'job1', null);
|
|
|
|
|
|
$this->assertFalse($rule->isAssertion());
|
|
$this->assertFalse($rule->isAssertion());
|
|
$this->assertTrue($rule2->isAssertion());
|
|
$this->assertTrue($rule2->isAssertion());
|
|
@@ -153,18 +104,13 @@ class RuleTest extends TestCase
|
|
|
|
|
|
public function testToString()
|
|
public function testToString()
|
|
{
|
|
{
|
|
- $literal = new Literal($this->getPackage('foo', '2.1'), true);
|
|
|
|
- $literal2 = new Literal($this->getPackage('baz', '1.1'), false);
|
|
|
|
|
|
+ $repo = new ArrayRepository;
|
|
|
|
+ $repo->addPackage($p1 = $this->getPackage('foo', '2.1'));
|
|
|
|
+ $repo->addPackage($p2 = $this->getPackage('baz', '1.1'));
|
|
|
|
+ $this->pool->addRepository($repo);
|
|
|
|
|
|
- $rule = new Rule(array($literal, $literal2), 'job1', null);
|
|
|
|
|
|
+ $rule = new Rule($this->pool, array($p1->getId(), -$p2->getId()), 'job1', null);
|
|
|
|
|
|
$this->assertEquals('(-baz-1.1.0.0|+foo-2.1.0.0)', $rule->__toString());
|
|
$this->assertEquals('(-baz-1.1.0.0|+foo-2.1.0.0)', $rule->__toString());
|
|
}
|
|
}
|
|
-
|
|
|
|
- private function getLiteralMock()
|
|
|
|
- {
|
|
|
|
- return $this->getMockBuilder('Composer\DependencyResolver\Literal')
|
|
|
|
- ->disableOriginalConstructor()
|
|
|
|
- ->getMock();
|
|
|
|
- }
|
|
|
|
}
|
|
}
|