123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- <?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']
- ];
- }
- }
|