annotate vendor/phar-io/version/tests/Integration/VersionConstraintParserTest.php @ 5:12f9dff5fda9 tip

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