radarrplexorganizrnginxsonarrdashboardhtpcserverhomepagesabnzbdheimdallembycouchpotatonzbgetbookmarkapplication-dashboardmuximuxlandingpagestartpagelanding
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							104 lines
						
					
					
						
							3.3 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							104 lines
						
					
					
						
							3.3 KiB
						
					
					
				
								<?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']
							 | 
						|
								        ];
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								}
							 | 
						|
								
							 |