 1ac0f42a58
			
		
	
	1ac0f42a58
	
	
	
		
			
			Travis config update Removed HHVM script as Laravel no longer support HHVM after releasing 5.3
		
			
				
	
	
		
			147 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			147 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			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\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)
 | |
|                             ]
 | |
|                         )
 | |
|                     ]
 | |
|                 )
 | |
|             ],
 | |
|             ['7.0.28-1', new ExactVersionConstraint('7.0.28-1')],
 | |
|             [
 | |
|                 '^3.0.0-alpha1',
 | |
|                 new AndVersionConstraintGroup(
 | |
|                     '^3.0.0-alpha1',
 | |
|                     [
 | |
|                         new GreaterThanOrEqualToVersionConstraint('^3.0.0-alpha1', new Version('3.0.0-alpha1')),
 | |
|                         new SpecificMajorVersionConstraint('^3.0.0-alpha1', 3)
 | |
|                     ]
 | |
|                 )
 | |
|             ],
 | |
|             [
 | |
|                 '^3.0.0-alpha.1',
 | |
|                 new AndVersionConstraintGroup(
 | |
|                     '^3.0.0-alpha.1',
 | |
|                     [
 | |
|                         new GreaterThanOrEqualToVersionConstraint('^3.0.0-alpha.1', new Version('3.0.0-alpha.1')),
 | |
|                         new SpecificMajorVersionConstraint('^3.0.0-alpha.1', 3)
 | |
|                     ]
 | |
|                 )
 | |
|             ]
 | |
|         ];
 | |
|     }
 | |
| 
 | |
|     public function unsupportedVersionStringProvider() {
 | |
|         return [
 | |
|             ['foo'],
 | |
|             ['+1.0.2'],
 | |
|             ['>=2.0'],
 | |
|             ['^5.6 || >= 7.0'],
 | |
|             ['2.0 || foo']
 | |
|         ];
 | |
|     }
 | |
| }
 |