forked from GNUsocial/gnu-social
		
	
		
			
				
	
	
		
			188 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			188 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?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')));
 | |
|     }
 | |
| 
 | |
| }
 |