@@ -2,45 +2,65 @@ package io.github.typesafegithub.workflows.shared.internal.model
22
33import io.kotest.assertions.assertSoftly
44import io.kotest.core.spec.style.FunSpec
5+ import io.kotest.matchers.comparables.shouldBeGreaterThan
56import io.kotest.matchers.shouldBe
67
78class 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+ }
2730 }
2831 }
2932 }
30- }
3133
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+ }
4363 }
4464 }
45- }
46- } )
65+ },
66+ )
0 commit comments