nginxsonarrradarrplexorganizrdashboardbookmarkapplication-dashboardmuximuxlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdallembycouchpotatonzbget
		
		
		
		
			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.
		
		
		
		
		
			
		
			
				
					
					
						
							187 lines
						
					
					
						
							5.5 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							187 lines
						
					
					
						
							5.5 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\Version; | |
| use PharIo\Version\AnyVersionConstraint; | |
| use PHPUnit\Framework\TestCase; | |
| 
 | |
| /** | |
|  * @covers \PharIo\Manifest\Manifest | |
|  * | |
|  * @uses \PharIo\Manifest\ApplicationName | |
|  * @uses \PharIo\Manifest\Author | |
|  * @uses \PharIo\Manifest\AuthorCollection | |
|  * @uses \PharIo\Manifest\BundledComponent | |
|  * @uses \PharIo\Manifest\BundledComponentCollection | |
|  * @uses \PharIo\Manifest\CopyrightInformation | |
|  * @uses \PharIo\Manifest\Email | |
|  * @uses \PharIo\Manifest\License | |
|  * @uses \PharIo\Manifest\RequirementCollection | |
|  * @uses \PharIo\Manifest\PhpVersionRequirement | |
|  * @uses \PharIo\Manifest\Type | |
|  * @uses \PharIo\Manifest\Application | |
|  * @uses \PharIo\Manifest\Url | |
|  * @uses \PharIo\Version\Version | |
|  * @uses \PharIo\Version\VersionConstraint | |
|  */ | |
| class ManifestTest extends TestCase { | |
|     /** | |
|      * @var ApplicationName | |
|      */ | |
|     private $name; | |
| 
 | |
|     /** | |
|      * @var Version | |
|      */ | |
|     private $version; | |
| 
 | |
|     /** | |
|      * @var Type | |
|      */ | |
|     private $type; | |
| 
 | |
|     /** | |
|      * @var CopyrightInformation | |
|      */ | |
|     private $copyrightInformation; | |
| 
 | |
|     /** | |
|      * @var RequirementCollection | |
|      */ | |
|     private $requirements; | |
| 
 | |
|     /** | |
|      * @var BundledComponentCollection | |
|      */ | |
|     private $bundledComponents; | |
| 
 | |
|     /** | |
|      * @var Manifest | |
|      */ | |
|     private $manifest; | |
| 
 | |
|     protected function setUp() { | |
|         $this->version = new Version('5.6.5'); | |
| 
 | |
|         $this->type = Type::application(); | |
| 
 | |
|         $author  = new Author('Joe Developer', new Email('user@example.com')); | |
|         $license = new License('BSD-3-Clause', new Url('https://github.com/sebastianbergmann/phpunit/blob/master/LICENSE')); | |
| 
 | |
|         $authors = new AuthorCollection; | |
|         $authors->add($author); | |
| 
 | |
|         $this->copyrightInformation = new CopyrightInformation($authors, $license); | |
| 
 | |
|         $this->requirements = new RequirementCollection; | |
|         $this->requirements->add(new PhpVersionRequirement(new AnyVersionConstraint)); | |
| 
 | |
|         $this->bundledComponents = new BundledComponentCollection; | |
|         $this->bundledComponents->add(new BundledComponent('phpunit/php-code-coverage', new Version('4.0.2'))); | |
| 
 | |
|         $this->name = new ApplicationName('phpunit/phpunit'); | |
| 
 | |
|         $this->manifest = new Manifest( | |
|             $this->name, | |
|             $this->version, | |
|             $this->type, | |
|             $this->copyrightInformation, | |
|             $this->requirements, | |
|             $this->bundledComponents | |
|         ); | |
|     } | |
| 
 | |
|     public function testCanBeCreated() { | |
|         $this->assertInstanceOf(Manifest::class, $this->manifest); | |
|     } | |
| 
 | |
|     public function testNameCanBeRetrieved() { | |
|         $this->assertEquals($this->name, $this->manifest->getName()); | |
|     } | |
| 
 | |
|     public function testVersionCanBeRetrieved() { | |
|         $this->assertEquals($this->version, $this->manifest->getVersion()); | |
|     } | |
| 
 | |
|     public function testTypeCanBeRetrieved() { | |
|         $this->assertEquals($this->type, $this->manifest->getType()); | |
|     } | |
| 
 | |
|     public function testTypeCanBeQueried() { | |
|         $this->assertTrue($this->manifest->isApplication()); | |
|         $this->assertFalse($this->manifest->isLibrary()); | |
|         $this->assertFalse($this->manifest->isExtension()); | |
|     } | |
| 
 | |
|     public function testCopyrightInformationCanBeRetrieved() { | |
|         $this->assertEquals($this->copyrightInformation, $this->manifest->getCopyrightInformation()); | |
|     } | |
| 
 | |
|     public function testRequirementsCanBeRetrieved() { | |
|         $this->assertEquals($this->requirements, $this->manifest->getRequirements()); | |
|     } | |
| 
 | |
|     public function testBundledComponentsCanBeRetrieved() { | |
|         $this->assertEquals($this->bundledComponents, $this->manifest->getBundledComponents()); | |
|     } | |
| 
 | |
|     /** | |
|      * @uses \PharIo\Manifest\Extension | |
|      */ | |
|     public function testExtendedApplicationCanBeQueriedForExtension() | |
|     { | |
|         $appName = new ApplicationName('foo/bar'); | |
|         $manifest = new Manifest( | |
|             new ApplicationName('foo/foo'), | |
|             new Version('1.0.0'), | |
|             Type::extension($appName, new AnyVersionConstraint), | |
|             $this->copyrightInformation, | |
|             new RequirementCollection, | |
|             new BundledComponentCollection | |
|         ); | |
| 
 | |
|         $this->assertTrue($manifest->isExtensionFor($appName)); | |
|     } | |
| 
 | |
|     public function testNonExtensionReturnsFalseWhenQueriesForExtension() { | |
|         $appName = new ApplicationName('foo/bar'); | |
|         $manifest = new Manifest( | |
|             new ApplicationName('foo/foo'), | |
|             new Version('1.0.0'), | |
|             Type::library(), | |
|             $this->copyrightInformation, | |
|             new RequirementCollection, | |
|             new BundledComponentCollection | |
|         ); | |
| 
 | |
|         $this->assertFalse($manifest->isExtensionFor($appName)); | |
|     } | |
| 
 | |
|     /** | |
|      * @uses \PharIo\Manifest\Extension | |
|      */ | |
|     public function testExtendedApplicationCanBeQueriedForExtensionWithVersion() | |
|     { | |
|         $appName = new ApplicationName('foo/bar'); | |
|         $manifest = new Manifest( | |
|             new ApplicationName('foo/foo'), | |
|             new Version('1.0.0'), | |
|             Type::extension($appName, new AnyVersionConstraint), | |
|             $this->copyrightInformation, | |
|             new RequirementCollection, | |
|             new BundledComponentCollection | |
|         ); | |
| 
 | |
|         $this->assertTrue($manifest->isExtensionFor($appName, new Version('1.2.3'))); | |
|     } | |
| 
 | |
| }
 | |
| 
 |