Skip to content

Commit 7664394

Browse files
committed
Increased test coverage
1 parent 6819e59 commit 7664394

File tree

3 files changed

+141
-0
lines changed

3 files changed

+141
-0
lines changed

parser_test.go

+26
Original file line numberDiff line numberDiff line change
@@ -192,3 +192,29 @@ func TestParser(t *testing.T) {
192192
invalid("1.2.3.4")
193193
invalid("1.2.3.")
194194
}
195+
196+
func TestParseRelaxed(t *testing.T) {
197+
bad := ParseRelaxed("bad")
198+
require.Nil(t, bad.version)
199+
require.Equal(t, []byte("bad"), bad.customversion)
200+
require.Equal(t, "bad", bad.String())
201+
good := ParseRelaxed("1.2.3-pre.a.10+build3.123.001")
202+
require.Nil(t, good.customversion)
203+
require.Equal(t, "1.2.3-pre.a.10+build3.123.001", good.version.String())
204+
require.Equal(t, "1.2.3-pre.a.10+build3.123.001", good.String())
205+
206+
}
207+
208+
func ExampleParseRelaxed() {
209+
WarnInvalidVersionWhenParsingRelaxed = true
210+
ParseRelaxed("bad")
211+
WarnInvalidVersionWhenParsingRelaxed = false
212+
213+
// Output:
214+
// WARNING invalid semver version bad: no major version found
215+
}
216+
217+
func TestMustParse(t *testing.T) {
218+
require.NotPanics(t, func() { MustParse("1.2.3") })
219+
require.Panics(t, func() { MustParse("bad") })
220+
}

relaxed_version_test.go

+93
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
//
2+
// Copyright 2018 Cristian Maglie. All rights reserved.
3+
// Use of this source code is governed by a BSD-style
4+
// license that can be found in the LICENSE file.
5+
//
6+
7+
package semver
8+
9+
import (
10+
"fmt"
11+
"testing"
12+
13+
"github.com/stretchr/testify/require"
14+
)
15+
16+
func TestRelaxedVersionComparator(t *testing.T) {
17+
sign := map[int]string{1: ">", 0: "=", -1: "<"}
18+
ascending := func(list ...*RelaxedVersion) {
19+
for i := range list[0 : len(list)-1] {
20+
a := list[i]
21+
b := list[i+1]
22+
comp := a.CompareTo(b)
23+
fmt.Printf("%s %s %s\n", a, sign[comp], b)
24+
require.Equal(t, comp, -1)
25+
require.True(t, a.LessThan(b))
26+
require.True(t, a.LessThanOrEqual(b))
27+
require.False(t, a.Equal(b))
28+
require.False(t, a.GreaterThanOrEqual(b))
29+
require.False(t, a.GreaterThan(b))
30+
31+
comp = b.CompareTo(a)
32+
fmt.Printf("%s %s %s\n", b, sign[comp], a)
33+
require.Equal(t, comp, 1)
34+
require.False(t, b.LessThan(a))
35+
require.False(t, b.LessThanOrEqual(a))
36+
require.False(t, b.Equal(a))
37+
require.True(t, b.GreaterThanOrEqual(a))
38+
require.True(t, b.GreaterThan(a))
39+
}
40+
}
41+
equal := func(list ...*RelaxedVersion) {
42+
for _, a := range list {
43+
for _, b := range list {
44+
comp := a.CompareTo(b)
45+
fmt.Printf("%s %s %s\n", a, sign[comp], b)
46+
require.Equal(t, comp, 0)
47+
require.False(t, a.LessThan(b))
48+
require.True(t, a.LessThanOrEqual(b))
49+
require.True(t, a.Equal(b))
50+
require.True(t, a.GreaterThanOrEqual(b))
51+
require.False(t, a.GreaterThan(b))
52+
53+
comp = b.CompareTo(a)
54+
fmt.Printf("%s %s %s\n", b, sign[comp], a)
55+
require.Equal(t, comp, 0)
56+
require.False(t, b.LessThan(a))
57+
require.True(t, b.LessThanOrEqual(a))
58+
require.True(t, b.Equal(a))
59+
require.True(t, b.GreaterThanOrEqual(a))
60+
require.False(t, b.GreaterThan(a))
61+
}
62+
}
63+
}
64+
ascending(
65+
ParseRelaxed("6_2"),
66+
ParseRelaxed("alpha"),
67+
ParseRelaxed("beta"),
68+
ParseRelaxed("gamma"),
69+
ParseRelaxed("1.0.0-alpha"),
70+
ParseRelaxed("1.0.0-alpha.1"),
71+
ParseRelaxed("1.0.0-alpha.beta"),
72+
ParseRelaxed("1.0.0-beta"),
73+
ParseRelaxed("1.0.0-beta.2"),
74+
ParseRelaxed("1.0.0-beta.11"),
75+
ParseRelaxed("1.0.0-rc.1"),
76+
ParseRelaxed("1.0.0"),
77+
ParseRelaxed("1.0.1"),
78+
ParseRelaxed("1.1.1"),
79+
ParseRelaxed("2.1.1"),
80+
)
81+
equal(
82+
ParseRelaxed(""),
83+
ParseRelaxed("0"),
84+
ParseRelaxed("0.0"),
85+
ParseRelaxed("0.0.0"),
86+
ParseRelaxed("0+aaa"),
87+
ParseRelaxed("0.0+aaa"),
88+
ParseRelaxed("0.0.0+aaa"),
89+
ParseRelaxed("0+aaa.bbb"),
90+
ParseRelaxed("0.0+aaa.bbb"),
91+
ParseRelaxed("0.0.0+aaa.bbb"),
92+
)
93+
}

version_test.go

+22
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,20 @@ func TestVersionComparator(t *testing.T) {
2222
comp := a.CompareTo(b)
2323
fmt.Printf("%s %s %s\n", a, sign[comp], b)
2424
require.Equal(t, comp, -1)
25+
require.True(t, a.LessThan(b))
26+
require.True(t, a.LessThanOrEqual(b))
27+
require.False(t, a.Equal(b))
28+
require.False(t, a.GreaterThanOrEqual(b))
29+
require.False(t, a.GreaterThan(b))
30+
2531
comp = b.CompareTo(a)
2632
fmt.Printf("%s %s %s\n", b, sign[comp], a)
2733
require.Equal(t, comp, 1)
34+
require.False(t, b.LessThan(a))
35+
require.False(t, b.LessThanOrEqual(a))
36+
require.False(t, b.Equal(a))
37+
require.True(t, b.GreaterThanOrEqual(a))
38+
require.True(t, b.GreaterThan(a))
2839
}
2940
}
3041
equal := func(list ...*Version) {
@@ -33,9 +44,20 @@ func TestVersionComparator(t *testing.T) {
3344
comp := a.CompareTo(b)
3445
fmt.Printf("%s %s %s\n", a, sign[comp], b)
3546
require.Equal(t, comp, 0)
47+
require.False(t, a.LessThan(b))
48+
require.True(t, a.LessThanOrEqual(b))
49+
require.True(t, a.Equal(b))
50+
require.True(t, a.GreaterThanOrEqual(b))
51+
require.False(t, a.GreaterThan(b))
52+
3653
comp = b.CompareTo(a)
3754
fmt.Printf("%s %s %s\n", b, sign[comp], a)
3855
require.Equal(t, comp, 0)
56+
require.False(t, b.LessThan(a))
57+
require.True(t, b.LessThanOrEqual(a))
58+
require.True(t, b.Equal(a))
59+
require.True(t, b.GreaterThanOrEqual(a))
60+
require.False(t, b.GreaterThan(a))
3961
}
4062
}
4163
}

0 commit comments

Comments
 (0)