Seditio Source
Root |
./othercms/croogo-4.0.7/vendor/phar-io/version/tests/Unit/VersionTest.php
<?php
/*
 * This file is part of PharIo\Version.
 *
 * (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\Version;

use
PHPUnit\Framework\TestCase;

/**
 * @covers \PharIo\Version\Version
 */
class VersionTest extends TestCase {
   
/**
     * @dataProvider versionProvider
     *
     * @param string $versionString
     * @param string $expectedMajor
     * @param string $expectedMinor
     * @param string $expectedPatch
     * @param string $expectedPreReleaseValue
     * @param int    $expectedReleaseCount
     */
   
public function testParsesVersionNumbers($versionString, $expectedMajor, $expectedMinor, $expectedPatch, $expectedPreReleaseValue = '', $expectedReleaseCount = 0) {
       
$version = new Version($versionString);

       
$this->assertSame($expectedMajor, $version->getMajor()->getValue());
       
$this->assertSame($expectedMinor, $version->getMinor()->getValue());
       
$this->assertSame($expectedPatch, $version->getPatch()->getValue());
        if (
$expectedPreReleaseValue !== '') {
           
$this->assertSame($expectedPreReleaseValue, $version->getPreReleaseSuffix()->getValue());
        }
        if (
$expectedReleaseCount !== 0) {
           
$this->assertSame($expectedReleaseCount, $version->getPreReleaseSuffix()->getNumber());
        }

       
$this->assertSame($versionString, $version->getVersionString());
    }

    public function
versionProvider() {
        return [
            [
'0.0.1', '0', '0', '1'],
            [
'0.1.2', '0', '1', '2'],
            [
'1.0.0-alpha', '1', '0', '0', 'alpha'],
            [
'3.4.12-dev3', '3', '4', '12', 'dev', 3],
        ];
    }

   
/**
     * @dataProvider versionGreaterThanProvider
     *
     * @param Version $versionA
     * @param Version $versionB
     * @param bool    $expectedResult
     */
   
public function testIsGreaterThan(Version $versionA, Version $versionB, $expectedResult) {
       
$this->assertSame($expectedResult, $versionA->isGreaterThan($versionB));
    }

   
/**
     * @return array
     */
   
public function versionGreaterThanProvider() {
        return [
            [new
Version('1.0.0'), new Version('1.0.1'), false],
            [new
Version('1.0.1'), new Version('1.0.0'), true],
            [new
Version('1.1.0'), new Version('1.0.1'), true],
            [new
Version('1.1.0'), new Version('2.0.1'), false],
            [new
Version('1.1.0'), new Version('1.1.0'), false],
            [new
Version('2.5.8'), new Version('1.6.8'), true],
            [new
Version('2.5.8'), new Version('2.6.8'), false],
            [new
Version('2.5.8'), new Version('3.1.2'), false],
        ];
    }

   
/**
     * @dataProvider invalidVersionStringProvider
     *
     * @param string $versionString
     */
   
public function testThrowsExceptionIfVersionStringDoesNotFollowSemVer($versionString)
    {
       
$this->expectException(InvalidVersionException::class);
        new
Version($versionString);
    }

   
/**
     * @return array
     */
   
public function invalidVersionStringProvider()
    {
        return [
            [
'foo'],
            [
'0.0.1-dev+ABC', '0', '0', '1', 'dev', 'ABC'],
            [
'1.0.0-x.7.z.92', '1', '0', '0', 'x.7.z.92']
        ];
    }

}