nginxsonarrradarrplexorganizrdashboardbookmarkapplication-dashboardmuximuxlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdallembycouchpotatonzbget
		
		
		
		
			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.
		
		
		
		
		
			
		
			
				
					
					
						
							125 lines
						
					
					
						
							4.1 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							125 lines
						
					
					
						
							4.1 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\VersionConstraintParser
							 | 
						|
								 */
							 | 
						|
								class VersionConstraintParserTest extends TestCase {
							 | 
						|
								    /**
							 | 
						|
								     * @dataProvider versionStringProvider
							 | 
						|
								     *
							 | 
						|
								     * @param string            $versionString
							 | 
						|
								     * @param VersionConstraint $expectedConstraint
							 | 
						|
								     */
							 | 
						|
								    public function testReturnsExpectedConstraint($versionString, VersionConstraint $expectedConstraint) {
							 | 
						|
								        $parser = new VersionConstraintParser;
							 | 
						|
								
							 | 
						|
								        $this->assertEquals($expectedConstraint, $parser->parse($versionString));
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * @dataProvider unsupportedVersionStringProvider
							 | 
						|
								     *
							 | 
						|
								     * @param string $versionString
							 | 
						|
								     */
							 | 
						|
								    public function testThrowsExceptionIfVersionStringIsNotSupported($versionString) {
							 | 
						|
								        $parser = new VersionConstraintParser;
							 | 
						|
								
							 | 
						|
								        $this->expectException(UnsupportedVersionConstraintException::class);
							 | 
						|
								
							 | 
						|
								        $parser->parse($versionString);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * @return array
							 | 
						|
								     */
							 | 
						|
								    public function versionStringProvider() {
							 | 
						|
								        return [
							 | 
						|
								            ['1.0.2', new ExactVersionConstraint('1.0.2')],
							 | 
						|
								            [
							 | 
						|
								                '~4.6',
							 | 
						|
								                new AndVersionConstraintGroup(
							 | 
						|
								                    '~4.6',
							 | 
						|
								                    [
							 | 
						|
								                        new GreaterThanOrEqualToVersionConstraint('~4.6', new Version('4.6')),
							 | 
						|
								                        new SpecificMajorVersionConstraint('~4.6', 4)
							 | 
						|
								                    ]
							 | 
						|
								                )
							 | 
						|
								            ],
							 | 
						|
								            [
							 | 
						|
								                '~4.6.2',
							 | 
						|
								                new AndVersionConstraintGroup(
							 | 
						|
								                    '~4.6.2',
							 | 
						|
								                    [
							 | 
						|
								                        new GreaterThanOrEqualToVersionConstraint('~4.6.2', new Version('4.6.2')),
							 | 
						|
								                        new SpecificMajorAndMinorVersionConstraint('~4.6.2', 4, 6)
							 | 
						|
								                    ]
							 | 
						|
								                )
							 | 
						|
								            ],
							 | 
						|
								            [
							 | 
						|
								                '^2.6.1',
							 | 
						|
								                new AndVersionConstraintGroup(
							 | 
						|
								                    '^2.6.1',
							 | 
						|
								                    [
							 | 
						|
								                        new GreaterThanOrEqualToVersionConstraint('^2.6.1', new Version('2.6.1')),
							 | 
						|
								                        new SpecificMajorVersionConstraint('^2.6.1', 2)
							 | 
						|
								                    ]
							 | 
						|
								                )
							 | 
						|
								            ],
							 | 
						|
								            ['5.1.*', new SpecificMajorAndMinorVersionConstraint('5.1.*', 5, 1)],
							 | 
						|
								            ['5.*', new SpecificMajorVersionConstraint('5.*', 5)],
							 | 
						|
								            ['*', new AnyVersionConstraint()],
							 | 
						|
								            [
							 | 
						|
								                '1.0.2 || 1.0.5',
							 | 
						|
								                new OrVersionConstraintGroup(
							 | 
						|
								                    '1.0.2 || 1.0.5',
							 | 
						|
								                    [
							 | 
						|
								                        new ExactVersionConstraint('1.0.2'),
							 | 
						|
								                        new ExactVersionConstraint('1.0.5')
							 | 
						|
								                    ]
							 | 
						|
								                )
							 | 
						|
								            ],
							 | 
						|
								            [
							 | 
						|
								                '^5.6 || ^7.0',
							 | 
						|
								                new OrVersionConstraintGroup(
							 | 
						|
								                    '^5.6 || ^7.0',
							 | 
						|
								                    [
							 | 
						|
								                        new AndVersionConstraintGroup(
							 | 
						|
								                            '^5.6', [
							 | 
						|
								                                new GreaterThanOrEqualToVersionConstraint('^5.6', new Version('5.6')),
							 | 
						|
								                                new SpecificMajorVersionConstraint('^5.6', 5)
							 | 
						|
								                            ]
							 | 
						|
								                        ),
							 | 
						|
								                        new AndVersionConstraintGroup(
							 | 
						|
								                            '^7.0', [
							 | 
						|
								                                new GreaterThanOrEqualToVersionConstraint('^7.0', new Version('7.0')),
							 | 
						|
								                                new SpecificMajorVersionConstraint('^7.0', 7)
							 | 
						|
								                            ]
							 | 
						|
								                        )
							 | 
						|
								                    ]
							 | 
						|
								                )
							 | 
						|
								            ]
							 | 
						|
								        ];
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function unsupportedVersionStringProvider() {
							 | 
						|
								        return [
							 | 
						|
								            ['foo'],
							 | 
						|
								            ['+1.0.2'],
							 | 
						|
								            ['>=2.0'],
							 | 
						|
								            ['^5.6 || >= 7.0'],
							 | 
						|
								            ['2.0 || foo']
							 | 
						|
								        ];
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								
							 |