annotate vendor/phar-io/version/tests/Unit/VersionTest.php @ 5:12f9dff5fda9 tip

Update to Drupal core 8.7.1
author Chris Cannam
date Thu, 09 May 2019 15:34:47 +0100
parents 5311817fb629
children
rev   line source
Chris@2 1 <?php
Chris@2 2 /*
Chris@2 3 * This file is part of PharIo\Version.
Chris@2 4 *
Chris@2 5 * (c) Arne Blankerts <arne@blankerts.de>, Sebastian Heuer <sebastian@phpeople.de>, Sebastian Bergmann <sebastian@phpunit.de>
Chris@2 6 *
Chris@2 7 * For the full copyright and license information, please view the LICENSE
Chris@2 8 * file that was distributed with this source code.
Chris@2 9 */
Chris@2 10
Chris@2 11 namespace PharIo\Version;
Chris@2 12
Chris@2 13 use PHPUnit\Framework\TestCase;
Chris@2 14
Chris@2 15 /**
Chris@2 16 * @covers \PharIo\Version\Version
Chris@2 17 */
Chris@2 18 class VersionTest extends TestCase {
Chris@2 19 /**
Chris@2 20 * @dataProvider versionProvider
Chris@2 21 *
Chris@2 22 * @param string $versionString
Chris@2 23 * @param string $expectedMajor
Chris@2 24 * @param string $expectedMinor
Chris@2 25 * @param string $expectedPatch
Chris@2 26 * @param string $expectedPreReleaseValue
Chris@2 27 * @param int $expectedReleaseCount
Chris@2 28 */
Chris@2 29 public function testParsesVersionNumbers($versionString, $expectedMajor, $expectedMinor, $expectedPatch, $expectedPreReleaseValue = '', $expectedReleaseCount = 0) {
Chris@2 30 $version = new Version($versionString);
Chris@2 31
Chris@2 32 $this->assertSame($expectedMajor, $version->getMajor()->getValue());
Chris@2 33 $this->assertSame($expectedMinor, $version->getMinor()->getValue());
Chris@2 34 $this->assertSame($expectedPatch, $version->getPatch()->getValue());
Chris@2 35 if ($expectedPreReleaseValue !== '') {
Chris@2 36 $this->assertSame($expectedPreReleaseValue, $version->getPreReleaseSuffix()->getValue());
Chris@2 37 }
Chris@2 38 if ($expectedReleaseCount !== 0) {
Chris@2 39 $this->assertSame($expectedReleaseCount, $version->getPreReleaseSuffix()->getNumber());
Chris@2 40 }
Chris@2 41
Chris@2 42 $this->assertSame($versionString, $version->getVersionString());
Chris@2 43 }
Chris@2 44
Chris@2 45 public function versionProvider() {
Chris@2 46 return [
Chris@2 47 ['0.0.1', '0', '0', '1'],
Chris@2 48 ['0.1.2', '0', '1', '2'],
Chris@2 49 ['1.0.0-alpha', '1', '0', '0', 'alpha'],
Chris@2 50 ['3.4.12-dev3', '3', '4', '12', 'dev', 3],
Chris@2 51 ];
Chris@2 52 }
Chris@2 53
Chris@2 54 /**
Chris@2 55 * @dataProvider versionGreaterThanProvider
Chris@2 56 *
Chris@2 57 * @param Version $versionA
Chris@2 58 * @param Version $versionB
Chris@2 59 * @param bool $expectedResult
Chris@2 60 */
Chris@2 61 public function testIsGreaterThan(Version $versionA, Version $versionB, $expectedResult) {
Chris@2 62 $this->assertSame($expectedResult, $versionA->isGreaterThan($versionB));
Chris@2 63 }
Chris@2 64
Chris@2 65 /**
Chris@2 66 * @return array
Chris@2 67 */
Chris@2 68 public function versionGreaterThanProvider() {
Chris@2 69 return [
Chris@2 70 [new Version('1.0.0'), new Version('1.0.1'), false],
Chris@2 71 [new Version('1.0.1'), new Version('1.0.0'), true],
Chris@2 72 [new Version('1.1.0'), new Version('1.0.1'), true],
Chris@2 73 [new Version('1.1.0'), new Version('2.0.1'), false],
Chris@2 74 [new Version('1.1.0'), new Version('1.1.0'), false],
Chris@2 75 [new Version('2.5.8'), new Version('1.6.8'), true],
Chris@2 76 [new Version('2.5.8'), new Version('2.6.8'), false],
Chris@2 77 [new Version('2.5.8'), new Version('3.1.2'), false],
Chris@2 78 ];
Chris@2 79 }
Chris@2 80
Chris@2 81 /**
Chris@2 82 * @dataProvider invalidVersionStringProvider
Chris@2 83 *
Chris@2 84 * @param string $versionString
Chris@2 85 */
Chris@2 86 public function testThrowsExceptionIfVersionStringDoesNotFollowSemVer($versionString)
Chris@2 87 {
Chris@2 88 $this->expectException(InvalidVersionException::class);
Chris@2 89 new Version($versionString);
Chris@2 90 }
Chris@2 91
Chris@2 92 /**
Chris@2 93 * @return array
Chris@2 94 */
Chris@2 95 public function invalidVersionStringProvider()
Chris@2 96 {
Chris@2 97 return [
Chris@2 98 ['foo'],
Chris@2 99 ['0.0.1-dev+ABC', '0', '0', '1', 'dev', 'ABC'],
Chris@2 100 ['1.0.0-x.7.z.92', '1', '0', '0', 'x.7.z.92']
Chris@2 101 ];
Chris@2 102 }
Chris@2 103
Chris@2 104 }