@@ -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