sonarrradarrplexorganizrnginxdashboardlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdallembycouchpotatonzbgetbookmarkapplication-dashboardmuximux
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							109 lines
						
					
					
						
							3.2 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							109 lines
						
					
					
						
							3.2 KiB
						
					
					
				
								<?php
							 | 
						|
								/*
							 | 
						|
								 * This file is part of PharIo\Manifest.
							 | 
						|
								 *
							 | 
						|
								 * (c) Arne Blankerts <arne@blankerts.de>, Sebastian Heuer <sebastian@phpeople.de>, Sebastian Bergmann <sebastian@phpunit.de>
							 | 
						|
								 *
							 | 
						|
								 * For the full copyright and license information, please view the LICENSE
							 | 
						|
								 * file that was distributed with this source code.
							 | 
						|
								 */
							 | 
						|
								
							 | 
						|
								namespace PharIo\Manifest;
							 | 
						|
								
							 | 
						|
								use PharIo\Version\AnyVersionConstraint;
							 | 
						|
								use PharIo\Version\Version;
							 | 
						|
								use PharIo\Version\VersionConstraint;
							 | 
						|
								use PharIo\Version\VersionConstraintParser;
							 | 
						|
								use PHPUnit\Framework\TestCase;
							 | 
						|
								
							 | 
						|
								/**
							 | 
						|
								 * @covers \PharIo\Manifest\Extension
							 | 
						|
								 * @covers \PharIo\Manifest\Type
							 | 
						|
								 *
							 | 
						|
								 * @uses \PharIo\Version\VersionConstraint
							 | 
						|
								 * @uses \PharIo\Manifest\ApplicationName
							 | 
						|
								 */
							 | 
						|
								class ExtensionTest extends TestCase {
							 | 
						|
								    /**
							 | 
						|
								     * @var Extension
							 | 
						|
								     */
							 | 
						|
								    private $type;
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * @var ApplicationName|\PHPUnit_Framework_MockObject_MockObject
							 | 
						|
								     */
							 | 
						|
								    private $name;
							 | 
						|
								
							 | 
						|
								    protected function setUp() {
							 | 
						|
								        $this->name = $this->createMock(ApplicationName::class);
							 | 
						|
								        $this->type = Type::extension($this->name, new AnyVersionConstraint);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testCanBeCreated() {
							 | 
						|
								        $this->assertInstanceOf(Extension::class, $this->type);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testIsNotApplication() {
							 | 
						|
								        $this->assertFalse($this->type->isApplication());
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testIsNotLibrary() {
							 | 
						|
								        $this->assertFalse($this->type->isLibrary());
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testIsExtension() {
							 | 
						|
								        $this->assertTrue($this->type->isExtension());
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testApplicationCanBeRetrieved()
							 | 
						|
								    {
							 | 
						|
								        $this->assertInstanceOf(ApplicationName::class, $this->type->getApplicationName());
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testVersionConstraintCanBeRetrieved() {
							 | 
						|
								        $this->assertInstanceOf(
							 | 
						|
								            VersionConstraint::class,
							 | 
						|
								            $this->type->getVersionConstraint()
							 | 
						|
								        );
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testApplicationCanBeQueried()
							 | 
						|
								    {
							 | 
						|
								        $this->name->method('isEqual')->willReturn(true);
							 | 
						|
								        $this->assertTrue(
							 | 
						|
								            $this->type->isExtensionFor($this->createMock(ApplicationName::class))
							 | 
						|
								        );
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testCompatibleWithReturnsTrueForMatchingVersionConstraintAndApplicaiton() {
							 | 
						|
								        $app = new ApplicationName('foo/bar');
							 | 
						|
								        $extension = Type::extension($app, (new VersionConstraintParser)->parse('^1.0'));
							 | 
						|
								        $version = new Version('1.0.0');
							 | 
						|
								
							 | 
						|
								        $this->assertTrue(
							 | 
						|
								            $extension->isCompatibleWith($app, $version)
							 | 
						|
								        );
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testCompatibleWithReturnsFalseForNotMatchingVersionConstraint() {
							 | 
						|
								        $app = new ApplicationName('foo/bar');
							 | 
						|
								        $extension = Type::extension($app, (new VersionConstraintParser)->parse('^1.0'));
							 | 
						|
								        $version = new Version('2.0.0');
							 | 
						|
								
							 | 
						|
								        $this->assertFalse(
							 | 
						|
								            $extension->isCompatibleWith($app, $version)
							 | 
						|
								        );
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testCompatibleWithReturnsFalseForNotMatchingApplication() {
							 | 
						|
								        $app1 = new ApplicationName('foo/bar');
							 | 
						|
								        $app2 = new ApplicationName('foo/foo');
							 | 
						|
								        $extension = Type::extension($app1, (new VersionConstraintParser)->parse('^1.0'));
							 | 
						|
								        $version = new Version('1.0.0');
							 | 
						|
								
							 | 
						|
								        $this->assertFalse(
							 | 
						|
								            $extension->isCompatibleWith($app2, $version)
							 | 
						|
								        );
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								}
							 | 
						|
								
							 |