| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 | <?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')));    }}
 |