1 package org.apache.maven.artifact.versioning;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import junit.framework.TestCase;
23
24
25
26
27
28
29
30 public class DefaultArtifactVersionTest
31 extends TestCase
32 {
33 public void testVersionParsing()
34 {
35 DefaultArtifactVersion version = new DefaultArtifactVersion( "1" );
36 assertEquals( "check major version", 1, version.getMajorVersion() );
37 assertEquals( "check minor version", 0, version.getMinorVersion() );
38 assertEquals( "check incremental version", 0, version.getIncrementalVersion() );
39 assertEquals( "check build number", 0, version.getBuildNumber() );
40 assertNull( "check qualifier", version.getQualifier() );
41
42 version = new DefaultArtifactVersion( "1.2" );
43 assertEquals( "check major version", 1, version.getMajorVersion() );
44 assertEquals( "check minor version", 2, version.getMinorVersion() );
45 assertEquals( "check incremental version", 0, version.getIncrementalVersion() );
46 assertEquals( "check build number", 0, version.getBuildNumber() );
47 assertNull( "check qualifier", version.getQualifier() );
48
49 version = new DefaultArtifactVersion( "1.2.3" );
50 assertEquals( "check major version", 1, version.getMajorVersion() );
51 assertEquals( "check minor version", 2, version.getMinorVersion() );
52 assertEquals( "check incremental version", 3, version.getIncrementalVersion() );
53 assertEquals( "check build number", 0, version.getBuildNumber() );
54 assertNull( "check qualifier", version.getQualifier() );
55
56 version = new DefaultArtifactVersion( "1.2.3-1" );
57 assertEquals( "check major version", 1, version.getMajorVersion() );
58 assertEquals( "check minor version", 2, version.getMinorVersion() );
59 assertEquals( "check incremental version", 3, version.getIncrementalVersion() );
60 assertEquals( "check build number", 1, version.getBuildNumber() );
61 assertNull( "check qualifier", version.getQualifier() );
62
63 version = new DefaultArtifactVersion( "1.2.3-alpha-1" );
64 assertEquals( "check major version", 1, version.getMajorVersion() );
65 assertEquals( "check minor version", 2, version.getMinorVersion() );
66 assertEquals( "check incremental version", 3, version.getIncrementalVersion() );
67 assertEquals( "check build number", 0, version.getBuildNumber() );
68 assertEquals( "check qualifier", "alpha-1", version.getQualifier() );
69
70 version = new DefaultArtifactVersion( "1.2-alpha-1" );
71 assertEquals( "check major version", 1, version.getMajorVersion() );
72 assertEquals( "check minor version", 2, version.getMinorVersion() );
73 assertEquals( "check incremental version", 0, version.getIncrementalVersion() );
74 assertEquals( "check build number", 0, version.getBuildNumber() );
75 assertEquals( "check qualifier", "alpha-1", version.getQualifier() );
76
77 version = new DefaultArtifactVersion( "1.2-alpha-1-20050205.060708-1" );
78 assertEquals( "check major version", 1, version.getMajorVersion() );
79 assertEquals( "check minor version", 2, version.getMinorVersion() );
80 assertEquals( "check incremental version", 0, version.getIncrementalVersion() );
81 assertEquals( "check build number", 0, version.getBuildNumber() );
82 assertEquals( "check qualifier", "alpha-1-20050205.060708-1", version.getQualifier() );
83
84 version = new DefaultArtifactVersion( "RELEASE" );
85 assertEquals( "check major version", 0, version.getMajorVersion() );
86 assertEquals( "check minor version", 0, version.getMinorVersion() );
87 assertEquals( "check incremental version", 0, version.getIncrementalVersion() );
88 assertEquals( "check build number", 0, version.getBuildNumber() );
89 assertEquals( "check qualifier", "RELEASE", version.getQualifier() );
90
91 version = new DefaultArtifactVersion( "1.0.1b" );
92 assertEquals( "check major version", 0, version.getMajorVersion() );
93 assertEquals( "check minor version", 0, version.getMinorVersion() );
94 assertEquals( "check incremental version", 0, version.getIncrementalVersion() );
95 assertEquals( "check build number", 0, version.getBuildNumber() );
96 assertEquals( "check qualifier", "1.0.1b", version.getQualifier() );
97
98 version = new DefaultArtifactVersion( "1.0RC2" );
99 assertEquals( "check major version", 0, version.getMajorVersion() );
100 assertEquals( "check minor version", 0, version.getMinorVersion() );
101 assertEquals( "check incremental version", 0, version.getIncrementalVersion() );
102 assertEquals( "check build number", 0, version.getBuildNumber() );
103 assertEquals( "check qualifier", "1.0RC2", version.getQualifier() );
104
105 version = new DefaultArtifactVersion( "1.7.3.0" );
106 assertEquals( "check major version", 0, version.getMajorVersion() );
107 assertEquals( "check minor version", 0, version.getMinorVersion() );
108 assertEquals( "check incremental version", 0, version.getIncrementalVersion() );
109 assertEquals( "check build number", 0, version.getBuildNumber() );
110 assertEquals( "check qualifier", "1.7.3.0", version.getQualifier() );
111
112 version = new DefaultArtifactVersion( "0.09" );
113 assertEquals( "check major version", 0, version.getMajorVersion() );
114 assertEquals( "check minor version", 0, version.getMinorVersion() );
115 assertEquals( "check incremental version", 0, version.getIncrementalVersion() );
116 assertEquals( "check build number", 0, version.getBuildNumber() );
117 assertEquals( "check qualifier", "0.09", version.getQualifier() );
118
119 version = new DefaultArtifactVersion( "02" );
120 assertEquals( "check major version", 0, version.getMajorVersion() );
121 assertEquals( "check minor version", 0, version.getMinorVersion() );
122 assertEquals( "check incremental version", 0, version.getIncrementalVersion() );
123 assertEquals( "check build number", 0, version.getBuildNumber() );
124 assertEquals( "check qualifier", "02", version.getQualifier() );
125
126 version = new DefaultArtifactVersion( "PATCH-1193602" );
127 assertEquals( "check major version", 0, version.getMajorVersion() );
128 assertEquals( "check minor version", 0, version.getMinorVersion() );
129 assertEquals( "check incremental version", 0, version.getIncrementalVersion() );
130 assertEquals( "check build number", 0, version.getBuildNumber() );
131 assertEquals( "check qualifier", "PATCH-1193602", version.getQualifier() );
132
133 version = new DefaultArtifactVersion( "2.0-1" );
134 assertEquals( "check major version", 2, version.getMajorVersion() );
135 assertEquals( "check minor version", 0, version.getMinorVersion() );
136 assertEquals( "check incremental version", 0, version.getIncrementalVersion() );
137 assertEquals( "check build number", 1, version.getBuildNumber() );
138 assertNull( "check qualifier", version.getQualifier() );
139 assertEquals( "check string value", "2.0-1", version.toString() );
140
141 version = new DefaultArtifactVersion( "5.0.0alpha-2006020117" );
142 assertEquals( "check major version", 0, version.getMajorVersion() );
143 assertEquals( "check minor version", 0, version.getMinorVersion() );
144 assertEquals( "check incremental version", 0, version.getIncrementalVersion() );
145 assertEquals( "check build number", 0, version.getBuildNumber() );
146 assertEquals( "check qualifier", "5.0.0alpha-2006020117", version.getQualifier() );
147 }
148
149 public void testVersionComparing()
150 {
151 DefaultArtifactVersion version = new DefaultArtifactVersion( "1" );
152 assertTrue( version.compareTo( new DefaultArtifactVersion( "2" ) ) < 0 );
153
154 version = new DefaultArtifactVersion( "1.5" );
155 assertTrue( version.compareTo( new DefaultArtifactVersion( "2" ) ) < 0 );
156
157 version = new DefaultArtifactVersion( "1" );
158 assertEquals( 0, version.compareTo( new DefaultArtifactVersion( "1" ) ) );
159
160 version = new DefaultArtifactVersion( "2" );
161 assertTrue( version.compareTo( new DefaultArtifactVersion( "1" ) ) > 0 );
162
163 version = new DefaultArtifactVersion( "2.5" );
164 assertTrue( version.compareTo( new DefaultArtifactVersion( "1" ) ) > 0 );
165
166 version = new DefaultArtifactVersion( "1.0" );
167 assertTrue( version.compareTo( new DefaultArtifactVersion( "1" ) ) == 0 );
168
169 version = new DefaultArtifactVersion( "1.0.0" );
170 assertTrue( version.compareTo( new DefaultArtifactVersion( "1" ) ) == 0 );
171
172 version = new DefaultArtifactVersion( "1.0" );
173 assertTrue( version.compareTo( new DefaultArtifactVersion( "1.1" ) ) < 0 );
174
175 version = new DefaultArtifactVersion( "1.2" );
176 assertTrue( version.compareTo( new DefaultArtifactVersion( "1.1" ) ) > 0 );
177
178 version = new DefaultArtifactVersion( "1.0.0" );
179 assertTrue( version.compareTo( new DefaultArtifactVersion( "1.1" ) ) < 0 );
180
181 version = new DefaultArtifactVersion( "1.2.0" );
182 assertTrue( version.compareTo( new DefaultArtifactVersion( "1.1" ) ) > 0 );
183
184 version = new DefaultArtifactVersion( "1.0-alpha-1" );
185 assertTrue( version.compareTo( new DefaultArtifactVersion( "1.0" ) ) < 0 );
186
187 version = new DefaultArtifactVersion( "1.0-alpha-1" );
188 assertTrue( version.compareTo( new DefaultArtifactVersion( "1.0-alpha-2" ) ) < 0 );
189
190 version = new DefaultArtifactVersion( "1.0-alpha-1" );
191 assertTrue( version.compareTo( new DefaultArtifactVersion( "1.0-beta-1" ) ) < 0 );
192
193 version = new DefaultArtifactVersion( "1.0" );
194 assertTrue( version.compareTo( new DefaultArtifactVersion( "1.0-alpha-1" ) ) > 0 );
195
196 version = new DefaultArtifactVersion( "1.0-alpha-2" );
197 assertTrue( version.compareTo( new DefaultArtifactVersion( "1.0-alpha-1" ) ) > 0 );
198
199 version = new DefaultArtifactVersion( "1.0-beta-1" );
200 assertTrue( version.compareTo( new DefaultArtifactVersion( "1.0-alpha-1" ) ) > 0 );
201
202 version = new DefaultArtifactVersion( "1.0-beta-1" );
203 assertTrue( version.compareTo( new DefaultArtifactVersion( "1.0-SNAPSHOT" ) ) > 0 );
204
205 version = new DefaultArtifactVersion( "1.0-SNAPSHOT" );
206 assertTrue( version.compareTo( new DefaultArtifactVersion( "1.0-beta-1" ) ) < 0 );
207
208 version = new DefaultArtifactVersion( "1.0-SNAPSHOT" );
209 assertTrue( version.compareTo( new DefaultArtifactVersion( "1.0" ) ) < 0 );
210
211 version = new DefaultArtifactVersion( "1.0" );
212 assertTrue( version.compareTo( new DefaultArtifactVersion( "1.0-SNAPSHOT" ) ) > 0 );
213
214 version = new DefaultArtifactVersion( "1.0-alpha-1-SNAPSHOT" );
215 assertTrue( version.compareTo( new DefaultArtifactVersion( "1.0-alpha-1" ) ) < 0 );
216
217 version = new DefaultArtifactVersion( "1.0-alpha-1" );
218 assertTrue( version.compareTo( new DefaultArtifactVersion( "1.0-alpha-1-SNAPSHOT" ) ) > 0 );
219
220 version = new DefaultArtifactVersion( "1.0" );
221 assertTrue( version.compareTo( new DefaultArtifactVersion( "1.0-1" ) ) < 0 );
222
223 version = new DefaultArtifactVersion( "1.0-1" );
224 assertTrue( version.compareTo( new DefaultArtifactVersion( "1.0-2" ) ) < 0 );
225
226 version = new DefaultArtifactVersion( "1.0-1" );
227 assertTrue( version.compareTo( new DefaultArtifactVersion( "1.0" ) ) > 0 );
228
229 version = new DefaultArtifactVersion( "1.0-2" );
230 assertTrue( version.compareTo( new DefaultArtifactVersion( "1.0-1" ) ) > 0 );
231
232 version = new DefaultArtifactVersion( "2.0-0" );
233 assertTrue( version.compareTo( new DefaultArtifactVersion( "2.0" ) ) == 0 );
234
235 version = new DefaultArtifactVersion( "2.0-1" );
236 assertTrue( version.compareTo( new DefaultArtifactVersion( "2.0" ) ) > 0 );
237
238 version = new DefaultArtifactVersion( "2.0-1" );
239 assertTrue( version.compareTo( new DefaultArtifactVersion( "2.0.0" ) ) > 0 );
240
241 version = new DefaultArtifactVersion( "2.0-1" );
242 assertTrue( version.compareTo( new DefaultArtifactVersion( "2.0.1" ) ) < 0 );
243
244 version = new DefaultArtifactVersion( "1.10" );
245 assertTrue( version.compareTo( new DefaultArtifactVersion( "1.2" ) ) > 0 );
246
247
248
249 }
250
251 public void testVersionComparingWithBuildNumberZero()
252 {
253 DefaultArtifactVersion v1 = new DefaultArtifactVersion( "2.0" );
254 DefaultArtifactVersion v2 = new DefaultArtifactVersion( "2.0-0" );
255 DefaultArtifactVersion v3 = new DefaultArtifactVersion( "2.0-alpha1" );
256 DefaultArtifactVersion v4 = new DefaultArtifactVersion( "2.0-1" );
257
258
259 assertTrue( v1.compareTo( v2 ) == 0 );
260 assertTrue( v2.compareTo( v1 ) == 0 );
261
262
263 assertTrue( v1.compareTo( v3 ) > 0 );
264 assertTrue( v3.compareTo( v1 ) < 0 );
265
266
267 assertTrue( v2.compareTo( v3 ) > 0 );
268 assertTrue( v3.compareTo( v1 ) < 0 );
269
270
271 assertTrue( v1.compareTo( v4 ) < 0 );
272 assertTrue( v4.compareTo( v1 ) > 0 );
273 assertTrue( v2.compareTo( v4 ) < 0 );
274 assertTrue( v4.compareTo( v2 ) > 0 );
275 assertTrue( v3.compareTo( v4 ) < 0 );
276 assertTrue( v4.compareTo( v3 ) > 0 );
277 }
278
279 public void testCompareToEqualsHashCodeConsistency()
280 {
281 DefaultArtifactVersion v1;
282 DefaultArtifactVersion v2;
283
284
285 v1 = new DefaultArtifactVersion( "1.3" );
286 v2 = v1;
287 assertTrue( v1.equals( v2 ) && v2.equals( v1 ) && ( v1.hashCode() == v2.hashCode() ) && ( v1.compareTo( v2 ) == 0 )
288 && ( v2.compareTo( v1 ) == 0 ) );
289
290
291 v1 = new DefaultArtifactVersion( "1" );
292 v2 = new DefaultArtifactVersion( "1.0.0-0" );
293 assertTrue( v1.equals( v2 ) && v2.equals( v1 ) && ( v1.hashCode() == v2.hashCode() ) && ( v1.compareTo( v2 ) == 0 )
294 && ( v2.compareTo( v1 ) == 0 ) );
295
296
297 v1 = new DefaultArtifactVersion( "1.3-alpha1" );
298 v2 = new DefaultArtifactVersion( "1.3-alpha1" );
299 assertTrue( v1.equals( v2 ) && v2.equals( v1 ) && ( v1.hashCode() == v2.hashCode() ) && ( v1.compareTo( v2 ) == 0 )
300 && ( v2.compareTo( v1 ) == 0 ) );
301
302
303 v1 = new DefaultArtifactVersion( "1.3-alpha1" );
304 v2 = new DefaultArtifactVersion( "1.3-alpha1-1" );
305 assertTrue( !v1.equals( v2 ) && !v2.equals( v1 ) && ( v1.compareTo( v2 ) > 0 ) && ( v2.compareTo( v1 ) < 0 ) );
306
307
308 v1 = new DefaultArtifactVersion( "1.3-alpha1" );
309 v2 = new DefaultArtifactVersion( "1.3-beta1" );
310 assertTrue( !v1.equals( v2 ) && !v2.equals( v1 ) && ( v1.compareTo( v2 ) < 0 ) && ( v2.compareTo( v1 ) > 0 ) );
311 }
312
313 public void testTransitivity()
314 {
315 DefaultArtifactVersion v1 = new DefaultArtifactVersion( "1" );
316 DefaultArtifactVersion v2 = new DefaultArtifactVersion( "1.0-0" );
317 DefaultArtifactVersion v3 = new DefaultArtifactVersion( "1.0.1" );
318 DefaultArtifactVersion v4 = new DefaultArtifactVersion( "1.0-beta1" );
319
320
321 assertTrue( v1.equals( v2 ) && v2.equals( v1 ) && ( v1.compareTo( v2 ) == 0 ) && ( v2.compareTo( v1 ) == 0 ) );
322
323
324 assertTrue( !v1.equals( v3 ) && !v3.equals( v1 ) && ( v1.compareTo( v3 ) < 0 ) && ( v3.compareTo( v1 ) > 0 ) );
325
326
327 assertTrue( !v2.equals( v3 ) && !v3.equals( v2 ) && ( v2.compareTo( v3 ) < 0 ) && ( v3.compareTo( v2 ) > 0 ) );
328
329
330 assertTrue( !v1.equals( v4 ) && !v4.equals( v1 ) && ( v1.compareTo( v4 ) > 0 ) && ( v4.compareTo( v1 ) < 0 ) );
331
332
333 assertTrue( !v2.equals( v4 ) && !v4.equals( v2 ) && ( v2.compareTo( v4 ) > 0 ) && ( v4.compareTo( v2 ) < 0 ) );
334 }
335
336 private void testInterfaceCompare( String version )
337 {
338 final DefaultArtifactVersion dav = new DefaultArtifactVersion( version );
339
340
341 ArtifactVersion av = new ArtifactVersion()
342 {
343 public int getMajorVersion()
344 {
345 return dav.getMajorVersion();
346 }
347
348 public int getMinorVersion()
349 {
350 return dav.getMinorVersion();
351 }
352
353 public int getIncrementalVersion()
354 {
355 return dav.getIncrementalVersion();
356 }
357
358 public int getBuildNumber()
359 {
360 return dav.getBuildNumber();
361 }
362
363 public String getQualifier()
364 {
365 return dav.getQualifier();
366 }
367
368
369 public int compareTo( Object o )
370 {
371 return 0;
372 }
373
374 public void parseVersion( String s )
375 {
376 }
377 };
378
379 assertTrue( dav.equals( av ) );
380 assertTrue( dav.compareTo( av ) == 0 );
381 }
382
383 public void testInterfaceCompares()
384 {
385 testInterfaceCompare( "1" );
386 testInterfaceCompare( "1.2" );
387 testInterfaceCompare( "1.2.3" );
388 testInterfaceCompare( "1.2.3-4" );
389 testInterfaceCompare( "1.2.3-four" );
390 testInterfaceCompare( "1-2" );
391 testInterfaceCompare( "1-two" );
392 }
393 }