annotate vendor/phar-io/version/tests/Integration/VersionConstraintParserTest.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 1fec387a4317
children
rev   line source
Chris@14 1 <?php
Chris@14 2 /*
Chris@14 3 * This file is part of PharIo\Version.
Chris@14 4 *
Chris@14 5 * (c) Arne Blankerts <arne@blankerts.de>, Sebastian Heuer <sebastian@phpeople.de>, Sebastian Bergmann <sebastian@phpunit.de>
Chris@14 6 *
Chris@14 7 * For the full copyright and license information, please view the LICENSE
Chris@14 8 * file that was distributed with this source code.
Chris@14 9 */
Chris@14 10
Chris@14 11 namespace PharIo\Version;
Chris@14 12
Chris@14 13 use PHPUnit\Framework\TestCase;
Chris@14 14
Chris@14 15 /**
Chris@14 16 * @covers \PharIo\Version\VersionConstraintParser
Chris@14 17 */
Chris@14 18 class VersionConstraintParserTest extends TestCase {
Chris@14 19 /**
Chris@14 20 * @dataProvider versionStringProvider
Chris@14 21 *
Chris@14 22 * @param string $versionString
Chris@14 23 * @param VersionConstraint $expectedConstraint
Chris@14 24 */
Chris@14 25 public function testReturnsExpectedConstraint($versionString, VersionConstraint $expectedConstraint) {
Chris@14 26 $parser = new VersionConstraintParser;
Chris@14 27
Chris@14 28 $this->assertEquals($expectedConstraint, $parser->parse($versionString));
Chris@14 29 }
Chris@14 30
Chris@14 31 /**
Chris@14 32 * @dataProvider unsupportedVersionStringProvider
Chris@14 33 *
Chris@14 34 * @param string $versionString
Chris@14 35 */
Chris@14 36 public function testThrowsExceptionIfVersionStringIsNotSupported($versionString) {
Chris@14 37 $parser = new VersionConstraintParser;
Chris@14 38
Chris@14 39 $this->expectException(UnsupportedVersionConstraintException::class);
Chris@14 40
Chris@14 41 $parser->parse($versionString);
Chris@14 42 }
Chris@14 43
Chris@14 44 /**
Chris@14 45 * @return array
Chris@14 46 */
Chris@14 47 public function versionStringProvider() {
Chris@14 48 return [
Chris@14 49 ['1.0.2', new ExactVersionConstraint('1.0.2')],
Chris@14 50 [
Chris@14 51 '~4.6',
Chris@14 52 new AndVersionConstraintGroup(
Chris@14 53 '~4.6',
Chris@14 54 [
Chris@14 55 new GreaterThanOrEqualToVersionConstraint('~4.6', new Version('4.6')),
Chris@14 56 new SpecificMajorVersionConstraint('~4.6', 4)
Chris@14 57 ]
Chris@14 58 )
Chris@14 59 ],
Chris@14 60 [
Chris@14 61 '~4.6.2',
Chris@14 62 new AndVersionConstraintGroup(
Chris@14 63 '~4.6.2',
Chris@14 64 [
Chris@14 65 new GreaterThanOrEqualToVersionConstraint('~4.6.2', new Version('4.6.2')),
Chris@14 66 new SpecificMajorAndMinorVersionConstraint('~4.6.2', 4, 6)
Chris@14 67 ]
Chris@14 68 )
Chris@14 69 ],
Chris@14 70 [
Chris@14 71 '^2.6.1',
Chris@14 72 new AndVersionConstraintGroup(
Chris@14 73 '^2.6.1',
Chris@14 74 [
Chris@14 75 new GreaterThanOrEqualToVersionConstraint('^2.6.1', new Version('2.6.1')),
Chris@14 76 new SpecificMajorVersionConstraint('^2.6.1', 2)
Chris@14 77 ]
Chris@14 78 )
Chris@14 79 ],
Chris@14 80 ['5.1.*', new SpecificMajorAndMinorVersionConstraint('5.1.*', 5, 1)],
Chris@14 81 ['5.*', new SpecificMajorVersionConstraint('5.*', 5)],
Chris@14 82 ['*', new AnyVersionConstraint()],
Chris@14 83 [
Chris@14 84 '1.0.2 || 1.0.5',
Chris@14 85 new OrVersionConstraintGroup(
Chris@14 86 '1.0.2 || 1.0.5',
Chris@14 87 [
Chris@14 88 new ExactVersionConstraint('1.0.2'),
Chris@14 89 new ExactVersionConstraint('1.0.5')
Chris@14 90 ]
Chris@14 91 )
Chris@14 92 ],
Chris@14 93 [
Chris@14 94 '^5.6 || ^7.0',
Chris@14 95 new OrVersionConstraintGroup(
Chris@14 96 '^5.6 || ^7.0',
Chris@14 97 [
Chris@14 98 new AndVersionConstraintGroup(
Chris@14 99 '^5.6', [
Chris@14 100 new GreaterThanOrEqualToVersionConstraint('^5.6', new Version('5.6')),
Chris@14 101 new SpecificMajorVersionConstraint('^5.6', 5)
Chris@14 102 ]
Chris@14 103 ),
Chris@14 104 new AndVersionConstraintGroup(
Chris@14 105 '^7.0', [
Chris@14 106 new GreaterThanOrEqualToVersionConstraint('^7.0', new Version('7.0')),
Chris@14 107 new SpecificMajorVersionConstraint('^7.0', 7)
Chris@14 108 ]
Chris@14 109 )
Chris@14 110 ]
Chris@14 111 )
Chris@14 112 ]
Chris@14 113 ];
Chris@14 114 }
Chris@14 115
Chris@14 116 public function unsupportedVersionStringProvider() {
Chris@14 117 return [
Chris@14 118 ['foo'],
Chris@14 119 ['+1.0.2'],
Chris@14 120 ['>=2.0'],
Chris@14 121 ['^5.6 || >= 7.0'],
Chris@14 122 ['2.0 || foo']
Chris@14 123 ];
Chris@14 124 }
Chris@14 125 }