View Javadoc
1   package org.codehaus.gmavenplus.model.internal;
2   
3   import org.junit.Test;
4   
5   import java.util.ArrayList;
6   import java.util.Collections;
7   import java.util.List;
8   
9   import static org.junit.Assert.*;
10  
11  
12  /**
13   * Unit tests for the Version class.
14   *
15   * @author Keegan Witt
16   */
17  public class VersionTest {
18  
19      @Test
20      public void testCompare() {
21          assertTrue(new Version(1, 9).compareTo(new Version(1, 10)) < 0);
22      }
23  
24      @Test
25      public void testCompareWithTag() {
26          Version v1 = Version.parseFromString("1.0.0");
27          Version v2 = Version.parseFromString("1.0.0-beta-1");
28          assertTrue(v1.compareTo(v2) > 0);
29      }
30  
31      @Test
32      public void testCompareWithTwoTags() {
33          Version v1 = Version.parseFromString("1.0.0-beta-1");
34          Version v2 = Version.parseFromString("1.0.0-beta-2");
35          assertTrue(v1.compareTo(v2) < 0);
36      }
37  
38      @Test
39      public void testCompareWithTwoTagsDifferentStartUppercase() {
40          Version v1 = Version.parseFromString("1.0.0-beta-1");
41          Version v2 = Version.parseFromString("1.0.0-RC-2");
42          assertTrue(v1.compareTo(v2) < 0);
43      }
44  
45      @Test
46      public void testCompareWithTwoTagsDifferentStartLowercase() {
47          Version v1 = Version.parseFromString("1.0.0-beta-1");
48          Version v2 = Version.parseFromString("1.0.0-rc-2");
49          assertTrue(v1.compareTo(v2) < 0);
50      }
51  
52      @Test
53      public void testCompareWithSnapshotTag() {
54          Version v1 = Version.parseFromString("1.0-SNAPSHOT");
55          Version v2 = Version.parseFromString("1.0");
56          assertTrue(v1.compareTo(v2) < 0);
57      }
58  
59      @Test
60      public void testCompareWithSnapshotTagOtherHasRevision() {
61          Version v1 = Version.parseFromString("1.0-SNAPSHOT");
62          Version v2 = Version.parseFromString("1.0.1");
63          assertTrue(v1.compareTo(v2) < 0);
64      }
65  
66      @Test
67      public void testCompareWithTwoTagsOneSnapshot() {
68          Version v1 = Version.parseFromString("1.0.0-beta-1");
69          Version v2 = Version.parseFromString("1.0.0-beta-2-SNAPSHOT");
70          assertTrue(v1.compareTo(v2) < 0);
71  
72          v1 = Version.parseFromString("1.0.0-beta-1-SNAPSHOT");
73          v2 = Version.parseFromString("1.0.0-beta-2");
74          assertTrue(v1.compareTo(v2) < 0);
75      }
76  
77      @Test
78      public void testSort() {
79          Version v1 = Version.parseFromString("1.0.0-alpha-1");
80          Version v2 = Version.parseFromString("1.0.0-alpha-2");
81          Version v3 = Version.parseFromString("1.0.0-beta-1");
82          Version v4 = Version.parseFromString("1.0.0-beta-2");
83          Version v5 = Version.parseFromString("1.0.0-rc-1");
84          Version v6 = Version.parseFromString("1.0.0-rc-2");
85          Version v7 = Version.parseFromString("1.0.0");
86          Version v8 = Version.parseFromString("1.0.1");
87          Version v9 = Version.parseFromString("1.1.0");
88          Version v10 = Version.parseFromString("2.0.0");
89          List<Version> versions = new ArrayList<>();
90          versions.add(v10);
91          versions.add(v9);
92          versions.add(v8);
93          versions.add(v7);
94          versions.add(v6);
95          versions.add(v5);
96          versions.add(v4);
97          versions.add(v3);
98          versions.add(v2);
99          versions.add(v1);
100         Collections.sort(versions);
101         assertEquals(v1, versions.get(0));
102         assertEquals(v2, versions.get(1));
103         assertEquals(v3, versions.get(2));
104         assertEquals(v4, versions.get(3));
105         assertEquals(v5, versions.get(4));
106         assertEquals(v6, versions.get(5));
107         assertEquals(v7, versions.get(6));
108         assertEquals(v8, versions.get(7));
109         assertEquals(v9, versions.get(8));
110         assertEquals(v10, versions.get(9));
111     }
112 
113     @Test(expected = IllegalArgumentException.class)
114     public void testConstructorWithNegatives() {
115         new Version(-1);
116     }
117 
118     @Test
119     public void testNotEqualsWithNonVersion() {
120         Version version = new Version(0);
121         assertNotEquals("", version.toString());
122     }
123 
124     @Test(expected = IllegalArgumentException.class)
125     public void testParseFromStringMajorIsNotInteger() {
126         Version.parseFromString("a.b");
127     }
128 
129     @Test
130     public void testParseFromStringMinorIsNotInteger() {
131         Version version = Version.parseFromString("0.a");
132         assertEquals(0, version.getMinor());
133     }
134 
135     @Test(expected = IllegalArgumentException.class)
136     public void testParseFromStringNull() {
137         Version.parseFromString(null);
138     }
139 
140     @Test(expected = IllegalArgumentException.class)
141     public void testParseFromStringEmpty() {
142         Version.parseFromString("");
143     }
144 
145     @Test
146     public void testParseFromStringAndToStringWithMultiPartTag() {
147         assertEquals(5, Version.parseFromString("0-multi-part-tag").toString().split("-").length);
148     }
149 
150     @Test
151     public void testParsingJavaVersion() {
152         assertTrue(Version.parseFromString("1.7.0_45").compareTo(new Version(1, 7), false) >= 0);
153     }
154 
155     @Test
156     public void testGettersAndSetters() {
157         int num = 1;
158         String str = "string";
159         Version version = new Version(0)
160                 .setMajor(num)
161                 .setMinor(num)
162                 .setRevision(num)
163                 .setTag(str);
164         assertEquals(num, version.getMajor());
165         assertEquals(num, version.getMinor());
166         assertEquals(num, version.getRevision());
167         assertEquals(str, version.getTag());
168     }
169 
170     @Test
171     public void testHashCodeSame() {
172         Version one = new Version(1, 2, 3);
173         Version two = new Version(1, 2, 3);
174         assertEquals(one.hashCode(), two.hashCode());
175     }
176 
177     @Test
178     public void testBetaIsNewerThanAlpha() {
179         Version v1 = Version.parseFromString("1.0.0-alpha-1");
180         Version v2 = Version.parseFromString("1.0.0-beta-2");
181         assertTrue(v1.compareTo(v2) < 0);
182         v1 = Version.parseFromString("1.0.0-alpha-2");
183         v2 = Version.parseFromString("1.0.0-beta-1");
184         assertTrue(v1.compareTo(v2) < 0);
185     }
186 
187     @Test
188     public void testDotSeparatingQualifierAndVersion() {
189         Version v1 = Version.parseFromString("3.0.0.beta-3");
190         Version v2 = Version.parseFromString("3.0.0-beta-3");
191         assertEquals(v1, v2);
192     }
193 
194 }