annotate vendor/phar-io/version/tests/Unit/VersionTest.php @ 19:fa3358dc1485 tip

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