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
14
15
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 }