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\Version
|
Chris@14
|
17 */
|
Chris@14
|
18 class VersionTest extends TestCase {
|
Chris@14
|
19 /**
|
Chris@14
|
20 * @dataProvider versionProvider
|
Chris@14
|
21 *
|
Chris@14
|
22 * @param string $versionString
|
Chris@14
|
23 * @param string $expectedMajor
|
Chris@14
|
24 * @param string $expectedMinor
|
Chris@14
|
25 * @param string $expectedPatch
|
Chris@14
|
26 * @param string $expectedPreReleaseValue
|
Chris@14
|
27 * @param int $expectedReleaseCount
|
Chris@14
|
28 */
|
Chris@14
|
29 public function testParsesVersionNumbers($versionString, $expectedMajor, $expectedMinor, $expectedPatch, $expectedPreReleaseValue = '', $expectedReleaseCount = 0) {
|
Chris@14
|
30 $version = new Version($versionString);
|
Chris@14
|
31
|
Chris@14
|
32 $this->assertSame($expectedMajor, $version->getMajor()->getValue());
|
Chris@14
|
33 $this->assertSame($expectedMinor, $version->getMinor()->getValue());
|
Chris@14
|
34 $this->assertSame($expectedPatch, $version->getPatch()->getValue());
|
Chris@14
|
35 if ($expectedPreReleaseValue !== '') {
|
Chris@14
|
36 $this->assertSame($expectedPreReleaseValue, $version->getPreReleaseSuffix()->getValue());
|
Chris@14
|
37 }
|
Chris@14
|
38 if ($expectedReleaseCount !== 0) {
|
Chris@14
|
39 $this->assertSame($expectedReleaseCount, $version->getPreReleaseSuffix()->getNumber());
|
Chris@14
|
40 }
|
Chris@14
|
41
|
Chris@14
|
42 $this->assertSame($versionString, $version->getVersionString());
|
Chris@14
|
43 }
|
Chris@14
|
44
|
Chris@14
|
45 public function versionProvider() {
|
Chris@14
|
46 return [
|
Chris@14
|
47 ['0.0.1', '0', '0', '1'],
|
Chris@14
|
48 ['0.1.2', '0', '1', '2'],
|
Chris@14
|
49 ['1.0.0-alpha', '1', '0', '0', 'alpha'],
|
Chris@14
|
50 ['3.4.12-dev3', '3', '4', '12', 'dev', 3],
|
Chris@14
|
51 ];
|
Chris@14
|
52 }
|
Chris@14
|
53
|
Chris@14
|
54 /**
|
Chris@14
|
55 * @dataProvider versionGreaterThanProvider
|
Chris@14
|
56 *
|
Chris@14
|
57 * @param Version $versionA
|
Chris@14
|
58 * @param Version $versionB
|
Chris@14
|
59 * @param bool $expectedResult
|
Chris@14
|
60 */
|
Chris@14
|
61 public function testIsGreaterThan(Version $versionA, Version $versionB, $expectedResult) {
|
Chris@14
|
62 $this->assertSame($expectedResult, $versionA->isGreaterThan($versionB));
|
Chris@14
|
63 }
|
Chris@14
|
64
|
Chris@14
|
65 /**
|
Chris@14
|
66 * @return array
|
Chris@14
|
67 */
|
Chris@14
|
68 public function versionGreaterThanProvider() {
|
Chris@14
|
69 return [
|
Chris@14
|
70 [new Version('1.0.0'), new Version('1.0.1'), false],
|
Chris@14
|
71 [new Version('1.0.1'), new Version('1.0.0'), true],
|
Chris@14
|
72 [new Version('1.1.0'), new Version('1.0.1'), true],
|
Chris@14
|
73 [new Version('1.1.0'), new Version('2.0.1'), false],
|
Chris@14
|
74 [new Version('1.1.0'), new Version('1.1.0'), false],
|
Chris@14
|
75 [new Version('2.5.8'), new Version('1.6.8'), true],
|
Chris@14
|
76 [new Version('2.5.8'), new Version('2.6.8'), false],
|
Chris@14
|
77 [new Version('2.5.8'), new Version('3.1.2'), false],
|
Chris@14
|
78 ];
|
Chris@14
|
79 }
|
Chris@14
|
80
|
Chris@14
|
81 /**
|
Chris@14
|
82 * @dataProvider invalidVersionStringProvider
|
Chris@14
|
83 *
|
Chris@14
|
84 * @param string $versionString
|
Chris@14
|
85 */
|
Chris@14
|
86 public function testThrowsExceptionIfVersionStringDoesNotFollowSemVer($versionString)
|
Chris@14
|
87 {
|
Chris@14
|
88 $this->expectException(InvalidVersionException::class);
|
Chris@14
|
89 new Version($versionString);
|
Chris@14
|
90 }
|
Chris@14
|
91
|
Chris@14
|
92 /**
|
Chris@14
|
93 * @return array
|
Chris@14
|
94 */
|
Chris@14
|
95 public function invalidVersionStringProvider()
|
Chris@14
|
96 {
|
Chris@14
|
97 return [
|
Chris@14
|
98 ['foo'],
|
Chris@14
|
99 ['0.0.1-dev+ABC', '0', '0', '1', 'dev', 'ABC'],
|
Chris@14
|
100 ['1.0.0-x.7.z.92', '1', '0', '0', 'x.7.z.92']
|
Chris@14
|
101 ];
|
Chris@14
|
102 }
|
Chris@14
|
103
|
Chris@14
|
104 }
|