1 package org.codehaus.plexus.languages.java.version;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.junit.jupiter.api.Test;
23
24 import static org.assertj.core.api.Assertions.assertThat;
25 import static org.junit.jupiter.api.Assertions.assertEquals;
26 import static org.junit.jupiter.api.Assertions.assertFalse;
27 import static org.junit.jupiter.api.Assertions.assertNotEquals;
28 import static org.junit.jupiter.api.Assertions.assertTrue;
29
30
31
32
33 class JavaVersionTest {
34 @Test
35 void testParse() {
36 assertThat(JavaVersion.parse("1.4").compareTo(JavaVersion.parse("1.4.2")))
37 .isNegative();
38 assertThat(JavaVersion.parse("1.4").compareTo(JavaVersion.parse("1.5"))).isNegative();
39 assertThat(JavaVersion.parse("1.8").compareTo(JavaVersion.parse("9"))).isNegative();
40
41 assertThat(JavaVersion.parse("1.4").compareTo(JavaVersion.parse("1.4"))).isZero();
42 assertThat(JavaVersion.parse("1.4.2").compareTo(JavaVersion.parse("1.4.2")))
43 .isZero();
44 assertThat(JavaVersion.parse("9").compareTo(JavaVersion.parse("9"))).isZero();
45
46 assertThat(JavaVersion.parse("1.4.2").compareTo(JavaVersion.parse("1.4")))
47 .isPositive();
48 assertThat(JavaVersion.parse("1.5").compareTo(JavaVersion.parse("1.4"))).isPositive();
49 assertThat(JavaVersion.parse("9").compareTo(JavaVersion.parse("1.8"))).isPositive();
50 }
51
52 @Test
53 void testVersionNamingExamples() {
54
55
56
57
58 assertThat(JavaVersion.parse("1.3.0").compareTo(JavaVersion.parse("1.3.0_01")))
59 .isNegative();
60 assertThat(JavaVersion.parse("1.3.0_01").compareTo(JavaVersion.parse("1.3.1")))
61 .isNegative();
62 assertThat(JavaVersion.parse("1.3.1").compareTo(JavaVersion.parse("1.3.1_01")))
63 .isNegative();
64
65 assertThat(JavaVersion.parse("1.3.0").compareTo(JavaVersion.parse("1.3.0-b24")))
66 .isNegative();
67 }
68
69 @Test
70 void testJEP223Short() {
71
72 assertThat(JavaVersion.parse("9-ea").compareTo(JavaVersion.parse("9"))).isNegative();
73 assertThat(JavaVersion.parse("9").compareTo(JavaVersion.parse("9.0.1"))).isNegative();
74 assertThat(JavaVersion.parse("9.0.1").compareTo(JavaVersion.parse("9.0.2")))
75 .isNegative();
76 assertThat(JavaVersion.parse("9.0.2").compareTo(JavaVersion.parse("9.1.2")))
77 .isNegative();
78 assertThat(JavaVersion.parse("9.1.2").compareTo(JavaVersion.parse("9.1.3")))
79 .isNegative();
80 assertThat(JavaVersion.parse("9.1.3").compareTo(JavaVersion.parse("9.1.4")))
81 .isNegative();
82 assertThat(JavaVersion.parse("9.1.4").compareTo(JavaVersion.parse("9.2.4")))
83 .isNegative();
84 }
85
86 @Test
87 void testIsAtLeastString() {
88 JavaVersion base = JavaVersion.parse("7");
89 assertTrue(base.isAtLeast("7"));
90 assertFalse(base.isAtLeast("8"));
91 }
92
93 @Test
94 void testIsAtLeastVersion() {
95
96 JavaVersion j9 = JavaVersion.parse("9");
97 assertFalse(JavaVersion.parse("8").isAtLeast(j9));
98 assertTrue(JavaVersion.parse("9").isAtLeast(j9));
99 }
100
101 @Test
102 void testIsBeforeString() {
103 JavaVersion base = JavaVersion.parse("7");
104 assertFalse(base.isBefore("7"));
105 assertTrue(base.isBefore("8"));
106 }
107
108 @Test
109 void testIsBeforeStringVersion() {
110
111 JavaVersion j9 = JavaVersion.parse("9");
112 assertTrue(JavaVersion.parse("8").isBefore(j9));
113 assertFalse(JavaVersion.parse("9").isBefore(j9));
114 }
115
116 @Test
117 void testEquals() {
118 JavaVersion seven = JavaVersion.parse("7");
119 JavaVersion other = JavaVersion.parse("7");
120
121 assertThat(seven).isEqualTo(seven);
122 assertEquals(seven, other);
123 assertNotEquals(null, seven);
124 assertNotEquals(seven, new Object());
125 assertNotEquals(seven, JavaVersion.parse("8"));
126 }
127
128 @Test
129 void testHascode() {
130 JavaVersion seven = JavaVersion.parse("7");
131 JavaVersion other = JavaVersion.parse("7");
132
133 assertEquals(seven.hashCode(), other.hashCode());
134 }
135
136 @Test
137 void testToString() {
138 assertEquals("7", JavaVersion.parse("7").toString());
139
140 assertEquals("!@#$%^&*()", JavaVersion.parse("!@#$%^&*()").toString(), "Raw version should not be parsed");
141 }
142
143 @Test
144 void testAsMajor() {
145 assertEquals(JavaVersion.parse("2"), JavaVersion.parse("1.2").asMajor());
146 assertEquals(JavaVersion.parse("5.0"), JavaVersion.parse("5.0").asMajor());
147
148 assertEquals("1.2", JavaVersion.parse("1.1.2").asMajor().asMajor().toString());
149 }
150
151 @Test
152 void testAsMajorEquals() {
153 JavaVersion version = JavaVersion.parse("1.2");
154 assertEquals(version, version.asMajor());
155 }
156
157 @Test
158 void testValueWithGroups() {
159 assertThat(JavaVersion.parse("1").getValue(1)).isEqualTo("1");
160 assertThat(JavaVersion.parse("1").getValue(2)).isEqualTo("1.0");
161 assertThat(JavaVersion.parse("1").getValue(3)).isEqualTo("1.0.0");
162 assertThat(JavaVersion.parse("2.1").getValue(1)).isEqualTo("2");
163 assertThat(JavaVersion.parse("2.1").getValue(2)).isEqualTo("2.1");
164 assertThat(JavaVersion.parse("2.1").getValue(3)).isEqualTo("2.1.0");
165 assertThat(JavaVersion.parse("3.2.1").getValue(1)).isEqualTo("3");
166 assertThat(JavaVersion.parse("3.2.1").getValue(2)).isEqualTo("3.2");
167 assertThat(JavaVersion.parse("3.2.1").getValue(3)).isEqualTo("3.2.1");
168 }
169 }