@@ -2,45 +2,65 @@ package io.github.typesafegithub.workflows.shared.internal.model
2
2
3
3
import io.kotest.assertions.assertSoftly
4
4
import io.kotest.core.spec.style.FunSpec
5
+ import io.kotest.matchers.comparables.shouldBeGreaterThan
5
6
import io.kotest.matchers.shouldBe
6
7
7
8
class VersionTest :
8
- FunSpec ({
9
- context(" parsing" ) {
10
- listOf (
11
- Pair (" v1.2.3" , Triple (1 , 2 , 3 )),
12
- Pair (" 1.2.3" , Triple (1 , 2 , 3 )),
13
- Pair (" v1.2.3.4" , Triple (1 , 2 , 4 )),
14
- Pair (" 1.2.3.4" , Triple (1 , 2 , 4 )),
15
- Pair (" v1.2" , Triple (1 , 2 , 2 )),
16
- Pair (" v3" , Triple (3 , 3 , 3 )),
17
- Pair (" V3" , Triple (3 , 3 , 3 )),
18
- Pair (" v3-prerelease" , Triple (0 , 0 , 0 )),
19
- Pair (" beta-v3" , Triple (0 , 0 , 0 )),
20
- ).forEach { (string, version) ->
21
- test(" correctly parses $string " ) {
22
- val parsedVersion = Version (string)
23
- assertSoftly {
24
- parsedVersion.major shouldBe version.first
25
- parsedVersion.minor shouldBe version.second
26
- parsedVersion.patch shouldBe version.third
9
+ FunSpec (
10
+ {
11
+ context(" parsing" ) {
12
+ listOf (
13
+ Pair (" v1.2.3" , Triple (1 , 2 , 3 )),
14
+ Pair (" 1.2.3" , Triple (1 , 2 , 3 )),
15
+ Pair (" v1.2.3.4" , Triple (1 , 2 , 3 )),
16
+ Pair (" 1.2.3.4" , Triple (1 , 2 , 3 )),
17
+ Pair (" v1.2" , Triple (1 , 2 , 0 )),
18
+ Pair (" v3" , Triple (3 , 0 , 0 )),
19
+ Pair (" V3" , Triple (3 , 0 , 0 )),
20
+ Pair (" v3-prerelease" , Triple (0 , 0 , 0 )),
21
+ Pair (" beta-v3" , Triple (0 , 0 , 0 )),
22
+ ).forEach { (string, version) ->
23
+ test(" correctly parses $string " ) {
24
+ val parsedVersion = Version (string)
25
+ assertSoftly {
26
+ parsedVersion.major shouldBe version.first
27
+ parsedVersion.minor shouldBe version.second
28
+ parsedVersion.patch shouldBe version.third
29
+ }
27
30
}
28
31
}
29
32
}
30
- }
31
33
32
- context(" isMajorVersion" ) {
33
- listOf (
34
- Pair (" v1.2.3" , false ),
35
- Pair (" v1.2" , false ),
36
- Pair (" v3" , true ),
37
- Pair (" V3" , true ),
38
- Pair (" v3-prerelease" , false ),
39
- Pair (" beta-v3" , false ),
40
- ).forEach { (version, isMajor) ->
41
- test(" isMajorVersion works correctly for $version " ) {
42
- Version (version).isMajorVersion() shouldBe isMajor
34
+ context(" isMajorVersion" ) {
35
+ listOf (
36
+ Pair (" v1.2.3" , false ),
37
+ Pair (" v1.2" , false ),
38
+ Pair (" v3" , true ),
39
+ Pair (" V3" , true ),
40
+ Pair (" v3-prerelease" , false ),
41
+ Pair (" beta-v3" , false ),
42
+ ).forEach { (version, isMajor) ->
43
+ test(" isMajorVersion works correctly for $version " ) {
44
+ Version (version).isMajorVersion() shouldBe isMajor
45
+ }
46
+ }
47
+ }
48
+
49
+ context(" compareTo" ) {
50
+ listOf (
51
+ Triple (" v1.2.1" , " v1.2" , true ),
52
+ Triple (" alpha" , " beta" , false ),
53
+ Triple (" 1.2.3" , " 1.2.3.4" , false ),
54
+ Triple (" 3.2.1" , " v3" , true ),
55
+ ).forEach { (left, right, leftIsGreater) ->
56
+ test(" compareTo works correctly for $left vs. $right " ) {
57
+ if (leftIsGreater) {
58
+ Version (left) shouldBeGreaterThan Version (right)
59
+ } else {
60
+ Version (right) shouldBeGreaterThan Version (left)
61
+ }
62
+ }
43
63
}
44
64
}
45
- }
46
- } )
65
+ },
66
+ )
0 commit comments