Skip to content
This repository was archived by the owner on Jul 18, 2025. It is now read-only.

Commit d8dd388

Browse files
authored
Merge pull request #4162 from seemethere/add_comparison_function_tests
Adds tests for versioncmp functions
2 parents 255980c + 1c27288 commit d8dd388

File tree

1 file changed

+192
-0
lines changed

1 file changed

+192
-0
lines changed

libmachine/versioncmp/compare_test.go

Lines changed: 192 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,195 @@ func TestCompare(t *testing.T) {
4343
}
4444
}
4545
}
46+
47+
func TestLessThan(t *testing.T) {
48+
cases := []struct {
49+
v1, v2 string
50+
want bool
51+
}{
52+
{"1.12", "1.12", false},
53+
{"1.0.0", "1", false},
54+
{"1", "1.0.0", false},
55+
{"1.05.00.0156", "1.0.221.9289", false},
56+
{"1", "1.0.1", true},
57+
{"1.0.1", "1", false},
58+
{"1.0.1", "1.0.2", true},
59+
{"1.0.2", "1.0.3", true},
60+
{"1.0.3", "1.1", true},
61+
{"1.1", "1.1.1", true},
62+
{"1.a", "1.b", false},
63+
{"1.a", "2.b", true},
64+
{"1.1", "1.1.0", false},
65+
{"1.1.1", "1.1.2", true},
66+
{"1.1.2", "1.2", true},
67+
{"1.12.1", "1.13.0-rc1", true},
68+
{"1.13.0-rc1", "1.13.0-rc2", true},
69+
{"1.13.0-rc1", "1.13.1-rc1", true},
70+
{"17.03.0-ce", "17.03.0-ce", false},
71+
{"17.03.1-ce", "17.03.2-ce", true},
72+
{"17.06.6-ce", "17.09.2-ce", true},
73+
{"17.03.0-ce", "17.06.0-ce", true},
74+
{"17.03.0-ce-rc2", "17.03.0-ce-rc1", false},
75+
{"17.03.0-ce-rc1", "18.03.0-ce-rc1", true},
76+
{"17.06.0-ce", "1.12.0", false},
77+
}
78+
for _, tc := range cases {
79+
if got := LessThan(tc.v1, tc.v2); got != tc.want {
80+
t.Errorf("LessThan(%q, %q) == %v, want %v", tc.v1, tc.v2, got, tc.want)
81+
}
82+
}
83+
}
84+
85+
func TestLessThanOrEqualTo(t *testing.T) {
86+
cases := []struct {
87+
v1, v2 string
88+
want bool
89+
}{
90+
{"1.12", "1.12", true},
91+
{"1.0.0", "1", true},
92+
{"1", "1.0.0", true},
93+
{"1.05.00.0156", "1.0.221.9289", false},
94+
{"1", "1.0.1", true},
95+
{"1.0.1", "1", false},
96+
{"1.0.1", "1.0.2", true},
97+
{"1.0.2", "1.0.3", true},
98+
{"1.0.3", "1.1", true},
99+
{"1.1", "1.1.1", true},
100+
{"1.a", "1.b", true},
101+
{"1.a", "2.b", true},
102+
{"1.1", "1.1.0", true},
103+
{"1.1.1", "1.1.2", true},
104+
{"1.1.2", "1.2", true},
105+
{"1.12.1", "1.13.0-rc1", true},
106+
{"1.13.0-rc1", "1.13.0-rc2", true},
107+
{"1.13.0-rc1", "1.13.1-rc1", true},
108+
{"17.03.0-ce", "17.03.0-ce", true},
109+
{"17.03.1-ce", "17.03.2-ce", true},
110+
{"17.06.6-ce", "17.09.2-ce", true},
111+
{"17.03.0-ce", "17.06.0-ce", true},
112+
{"17.03.0-ce-rc2", "17.03.0-ce-rc1", false},
113+
{"17.03.0-ce-rc1", "18.03.0-ce-rc1", true},
114+
{"17.06.0-ce", "1.12.0", false},
115+
}
116+
for _, tc := range cases {
117+
if got := LessThanOrEqualTo(tc.v1, tc.v2); got != tc.want {
118+
t.Errorf("LessThanOrEqualTo(%q, %q) == %v, want %v", tc.v1, tc.v2, got, tc.want)
119+
}
120+
}
121+
}
122+
123+
func TestGreaterThan(t *testing.T) {
124+
cases := []struct {
125+
v1, v2 string
126+
want bool
127+
}{
128+
{"1.12", "1.12", false},
129+
{"1.0.0", "1", false},
130+
{"1", "1.0.0", false},
131+
{"1.05.00.0156", "1.0.221.9289", true},
132+
{"1", "1.0.1", false},
133+
{"1.0.1", "1", true},
134+
{"1.0.1", "1.0.2", false},
135+
{"1.0.2", "1.0.3", false},
136+
{"1.0.3", "1.1", false},
137+
{"1.1", "1.1.1", false},
138+
{"1.a", "1.b", false},
139+
{"1.a", "2.b", false},
140+
{"1.1", "1.1.0", false},
141+
{"1.1.1", "1.1.2", false},
142+
{"1.1.2", "1.2", false},
143+
{"1.12.1", "1.13.0-rc1", false},
144+
{"1.13.0-rc1", "1.13.0-rc2", false},
145+
{"1.13.0-rc1", "1.13.1-rc1", false},
146+
{"17.03.0-ce", "17.03.0-ce", false},
147+
{"17.03.1-ce", "17.03.2-ce", false},
148+
{"17.06.6-ce", "17.09.2-ce", false},
149+
{"17.03.0-ce", "17.06.0-ce", false},
150+
{"17.03.0-ce-rc2", "17.03.0-ce-rc1", true},
151+
{"17.03.0-ce-rc1", "18.03.0-ce-rc1", false},
152+
{"17.06.0-ce", "1.12.0", true},
153+
}
154+
for _, tc := range cases {
155+
if got := GreaterThan(tc.v1, tc.v2); got != tc.want {
156+
t.Errorf("GreaterThan(%q, %q) == %v, want %v", tc.v1, tc.v2, got, tc.want)
157+
}
158+
}
159+
}
160+
161+
func TestGreaterThanOrEqualTo(t *testing.T) {
162+
cases := []struct {
163+
v1, v2 string
164+
want bool
165+
}{
166+
{"1.12", "1.12", true},
167+
{"1.0.0", "1", true},
168+
{"1", "1.0.0", true},
169+
{"1.05.00.0156", "1.0.221.9289", true},
170+
{"1", "1.0.1", false},
171+
{"1.0.1", "1", true},
172+
{"1.0.1", "1.0.2", false},
173+
{"1.0.2", "1.0.3", false},
174+
{"1.0.3", "1.1", false},
175+
{"1.1", "1.1.1", false},
176+
{"1.a", "1.b", true},
177+
{"1.a", "2.b", false},
178+
{"1.1", "1.1.0", true},
179+
{"1.1.1", "1.1.2", false},
180+
{"1.1.2", "1.2", false},
181+
{"1.12.1", "1.13.0-rc1", false},
182+
{"1.13.0-rc1", "1.13.0-rc2", false},
183+
{"1.13.0-rc1", "1.13.1-rc1", false},
184+
{"17.03.0-ce", "17.03.0-ce", true},
185+
{"17.03.1-ce", "17.03.2-ce", false},
186+
{"17.06.6-ce", "17.09.2-ce", false},
187+
{"17.03.0-ce", "17.06.0-ce", false},
188+
{"17.03.0-ce-rc2", "17.03.0-ce-rc1", true},
189+
{"17.03.0-ce-rc1", "18.03.0-ce-rc1", false},
190+
{"17.06.0-ce", "1.12.0", true},
191+
}
192+
for _, tc := range cases {
193+
if got := GreaterThanOrEqualTo(tc.v1, tc.v2); got != tc.want {
194+
t.Errorf("GreaterThanOrEqualTo(%q, %q) == %v, want %v", tc.v1, tc.v2, got, tc.want)
195+
}
196+
}
197+
}
198+
199+
func TestEqual(t *testing.T) {
200+
cases := []struct {
201+
v1, v2 string
202+
want bool
203+
}{
204+
{"1.12", "1.12", true},
205+
{"1.0.0", "1", true},
206+
{"1", "1.0.0", true},
207+
{"1.05.00.0156", "1.0.221.9289", false},
208+
{"1", "1.0.1", false},
209+
{"1.0.1", "1", false},
210+
{"1.0.1", "1.0.2", false},
211+
{"1.0.2", "1.0.3", false},
212+
{"1.0.3", "1.1", false},
213+
{"1.1", "1.1.1", false},
214+
{"1.a", "1.b", true},
215+
{"1.a", "2.b", false},
216+
{"1.1", "1.1.0", true},
217+
{"1.1.1", "1.1.2", false},
218+
{"1.1.2", "1.2", false},
219+
{"1.12.1", "1.13.0-rc1", false},
220+
{"1.13.0-rc1", "1.13.0-rc2", false},
221+
{"1.13.0-rc1", "1.13.1-rc1", false},
222+
{"17.03.0-ce", "17.03.0-ce", true},
223+
{"17.03.1-ce", "17.03.2-ce", false},
224+
{"17.06.6-ce", "17.09.2-ce", false},
225+
{"17.03.0-ce", "17.06.0-ce", false},
226+
{"17.03.0-ce-rc2", "17.03.0-ce-rc1", false},
227+
{"17.03.0-ce-rc1", "18.03.0-ce-rc1", false},
228+
{"17.06.0-ce-rc2", "1.12.0", false},
229+
{"1.12.0", "17.06.0-ce-rc2", false},
230+
{"17.06.0-ce", "1.12.0", false},
231+
}
232+
for _, tc := range cases {
233+
if got := Equal(tc.v1, tc.v2); got != tc.want {
234+
t.Errorf("Equal(%q, %q) == %v, want %v", tc.v1, tc.v2, got, tc.want)
235+
}
236+
}
237+
}

0 commit comments

Comments
 (0)