diff vendor/phar-io/manifest/tests/values/ManifestTest.php @ 14:1fec387a4317

Update Drupal core to 8.5.2 via Composer
author Chris Cannam
date Mon, 23 Apr 2018 09:46:53 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vendor/phar-io/manifest/tests/values/ManifestTest.php	Mon Apr 23 09:46:53 2018 +0100
@@ -0,0 +1,187 @@
+<?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')));
+    }
+
+}