Skip to content

Commit dd09660

Browse files
committed
Enhance VersionTest with pre-release and validation cases
Added tests for pre-release version handling, including equality, comparison, and hash code checks. Introduced validation for invalid version numbers and improved coverage for toString and getPreRelease methods. Removed unused imports and refactored test structure for clarity.
1 parent ee6d2cc commit dd09660

1 file changed

Lines changed: 71 additions & 20 deletions

File tree

microsphere-java-core/src/test/java/io/microsphere/util/VersionTest.java

Lines changed: 71 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,11 @@
1717
package io.microsphere.util;
1818

1919
import io.microsphere.AbstractTestCase;
20-
import io.microsphere.util.Version.Operator;
2120
import org.junit.jupiter.api.Test;
2221

2322
import static io.microsphere.constants.SymbolConstants.DOT;
23+
import static io.microsphere.constants.SymbolConstants.HYPHEN;
2424
import static io.microsphere.constants.SymbolConstants.SPACE;
25-
import static io.microsphere.util.Version.Operator.EQ;
26-
import static io.microsphere.util.Version.Operator.GE;
27-
import static io.microsphere.util.Version.Operator.GT;
28-
import static io.microsphere.util.Version.Operator.LE;
29-
import static io.microsphere.util.Version.Operator.LT;
3025
import static io.microsphere.util.Version.getValue;
3126
import static io.microsphere.util.Version.getVersion;
3227
import static io.microsphere.util.Version.of;
@@ -51,10 +46,22 @@ class VersionTest extends AbstractTestCase {
5146

5247
private static final int PATCH = 3;
5348

49+
private static final String ALPHA_PRE_RELEASE = "alpha";
50+
51+
private static final String BETA_PRE_RELEASE = "beta";
52+
5453
private static final String VERSION = MAJOR + DOT + MINOR + DOT + PATCH;
5554

55+
private static final String ALPHA_PRE_RELEASE_VERSION = VERSION + HYPHEN + ALPHA_PRE_RELEASE;
56+
57+
private static final String BETA_PRE_RELEASE_VERSION = VERSION + HYPHEN + BETA_PRE_RELEASE;
58+
5659
private static final Version TEST_VERSION = of(VERSION);
5760

61+
private static final Version TEST_ALPHA_PRE_RELEASE_VERSION = of(ALPHA_PRE_RELEASE_VERSION);
62+
63+
private static final Version TEST_BETA_PRE_RELEASE_VERSION = of(BETA_PRE_RELEASE_VERSION);
64+
5865
@Test
5966
void testGetValue() {
6067
assertEquals(MAJOR, getValue("1"));
@@ -115,15 +122,33 @@ void testOfOnIllegalArgumentException() {
115122
assertThrows(IllegalArgumentException.class, () -> of(SPACE));
116123
}
117124

125+
@Test
126+
void testInvalidVersion() {
127+
assertThrows(IllegalArgumentException.class, () -> of(-1, 2, 3));
128+
assertThrows(IllegalArgumentException.class, () -> of(1, -1, 3));
129+
assertThrows(IllegalArgumentException.class, () -> of(1, 2, -1));
130+
assertThrows(IllegalArgumentException.class, () -> of(0, 0, 0));
131+
}
132+
118133
@Test
119134
void testEquals() {
120135
assertTrue(TEST_VERSION.equals(TEST_VERSION));
121136
assertTrue(TEST_VERSION.equals((Object) TEST_VERSION));
122137
assertTrue(TEST_VERSION.equals(of(MAJOR, MINOR, PATCH)));
138+
assertTrue(TEST_ALPHA_PRE_RELEASE_VERSION.equals(of(MAJOR, MINOR, PATCH, ALPHA_PRE_RELEASE)));
139+
assertTrue(TEST_BETA_PRE_RELEASE_VERSION.equals(of(MAJOR, MINOR, PATCH, BETA_PRE_RELEASE)));
140+
141+
assertFalse(TEST_VERSION.equals("test"));
142+
assertFalse(TEST_VERSION.equals((Object) of(MAJOR)));
143+
assertFalse(TEST_VERSION.equals((Object) of(MAJOR, MINOR)));
144+
assertFalse(TEST_VERSION.equals((Object) TEST_ALPHA_PRE_RELEASE_VERSION));
145+
assertFalse(TEST_BETA_PRE_RELEASE_VERSION.equals((Object) TEST_ALPHA_PRE_RELEASE_VERSION));
146+
}
123147

124-
assertFalse(TEST_VERSION.equals(of(0)));
125-
assertFalse(TEST_VERSION.equals(of(MAJOR)));
126-
assertFalse(TEST_VERSION.equals(of(MAJOR, MINOR)));
148+
@Test
149+
void testHashCode() {
150+
assertEquals(TEST_VERSION.hashCode(), TEST_VERSION.hashCode());
151+
assertEquals(TEST_ALPHA_PRE_RELEASE_VERSION.hashCode(), TEST_ALPHA_PRE_RELEASE_VERSION.hashCode());
127152
}
128153

129154
@Test
@@ -160,6 +185,10 @@ void testGt() {
160185
assertFalse(TEST_VERSION.gt(of(MAJOR + 1)));
161186
assertFalse(TEST_VERSION.gt(of(MAJOR, MINOR + 1)));
162187
assertFalse(TEST_VERSION.gt(of(MAJOR, MINOR, PATCH + 1)));
188+
189+
assertTrue(TEST_VERSION.gt(TEST_ALPHA_PRE_RELEASE_VERSION));
190+
assertTrue(TEST_VERSION.gt(TEST_BETA_PRE_RELEASE_VERSION));
191+
assertTrue(TEST_BETA_PRE_RELEASE_VERSION.gt(TEST_ALPHA_PRE_RELEASE_VERSION));
163192
}
164193

165194
@Test
@@ -183,6 +212,10 @@ void testGe() {
183212
assertFalse(TEST_VERSION.ge(of(MAJOR + 1)));
184213
assertFalse(TEST_VERSION.ge(of(MAJOR, MINOR + 1)));
185214
assertFalse(TEST_VERSION.ge(of(MAJOR, MINOR, PATCH + 1)));
215+
216+
assertTrue(TEST_VERSION.ge(TEST_ALPHA_PRE_RELEASE_VERSION));
217+
assertTrue(TEST_VERSION.ge(TEST_BETA_PRE_RELEASE_VERSION));
218+
assertTrue(TEST_BETA_PRE_RELEASE_VERSION.ge(TEST_ALPHA_PRE_RELEASE_VERSION));
186219
}
187220

188221
@Test
@@ -206,6 +239,14 @@ void testLt() {
206239
assertTrue(TEST_VERSION.lt(of(MAJOR + 1)));
207240
assertTrue(TEST_VERSION.lt(of(MAJOR, MINOR + 1)));
208241
assertTrue(TEST_VERSION.lt(of(MAJOR, MINOR, PATCH + 1)));
242+
243+
assertTrue(TEST_ALPHA_PRE_RELEASE_VERSION.lt(TEST_VERSION));
244+
assertTrue(TEST_BETA_PRE_RELEASE_VERSION.lt(TEST_VERSION));
245+
assertTrue(TEST_ALPHA_PRE_RELEASE_VERSION.lt(TEST_BETA_PRE_RELEASE_VERSION));
246+
assertFalse(TEST_ALPHA_PRE_RELEASE_VERSION.lt(of(MAJOR, MINOR)));
247+
assertFalse(TEST_ALPHA_PRE_RELEASE_VERSION.lt(of(MAJOR, MINOR, PATCH - 1)));
248+
assertFalse(TEST_ALPHA_PRE_RELEASE_VERSION.lt(of(MAJOR, MINOR, PATCH - 2)));
249+
assertFalse(TEST_ALPHA_PRE_RELEASE_VERSION.lt(of(MAJOR)));
209250
}
210251

211252
@Test
@@ -229,6 +270,17 @@ void testLe() {
229270
assertTrue(TEST_VERSION.le(of(MAJOR + 1)));
230271
assertTrue(TEST_VERSION.le(of(MAJOR, MINOR + 1)));
231272
assertTrue(TEST_VERSION.le(of(MAJOR, MINOR, PATCH + 1)));
273+
274+
assertTrue(TEST_BETA_PRE_RELEASE_VERSION.le(TEST_VERSION));
275+
assertTrue(TEST_ALPHA_PRE_RELEASE_VERSION.le(TEST_BETA_PRE_RELEASE_VERSION));
276+
assertFalse(TEST_ALPHA_PRE_RELEASE_VERSION.le(of(MAJOR, MINOR)));
277+
assertFalse(TEST_ALPHA_PRE_RELEASE_VERSION.le(of(MAJOR, MINOR, PATCH - 1)));
278+
assertFalse(TEST_ALPHA_PRE_RELEASE_VERSION.le(of(MAJOR, MINOR, PATCH - 2)));
279+
assertFalse(TEST_ALPHA_PRE_RELEASE_VERSION.le(of(MAJOR)));
280+
281+
assertFalse(TEST_VERSION.le(TEST_ALPHA_PRE_RELEASE_VERSION));
282+
assertFalse(TEST_VERSION.le(TEST_BETA_PRE_RELEASE_VERSION));
283+
assertFalse(TEST_BETA_PRE_RELEASE_VERSION.le(TEST_ALPHA_PRE_RELEASE_VERSION));
232284
}
233285

234286
@Test
@@ -248,21 +300,20 @@ void testGetVersionOnIllegalArgumentException() {
248300
}
249301

250302
@Test
251-
void testOperator() {
252-
assertEquals(EQ, Operator.of("="));
253-
assertEquals(LT, Operator.of("<"));
254-
assertEquals(LE, Operator.of("<="));
255-
assertEquals(GT, Operator.of(">"));
256-
assertEquals(GE, Operator.of(">="));
303+
void testToString() {
304+
assertToString("1.0.0");
305+
assertToString("1.2.3-alpha");
306+
assertToString("4.5.6-beta");
307+
assertToString("7.8.9-RC1");
257308
}
258309

259310
@Test
260-
void testOperatorOnIllegalArgumentException() {
261-
assertThrows(IllegalArgumentException.class, () -> Operator.of(""));
311+
void testGetPreRelease() {
312+
assertEquals("alpha", TEST_ALPHA_PRE_RELEASE_VERSION.getPreRelease());
313+
assertEquals("beta", TEST_BETA_PRE_RELEASE_VERSION.getPreRelease());
262314
}
263315

264-
@Test
265-
void testToString() {
266-
assertEquals("Version{major=1, minor=2, patch=3}", TEST_VERSION.toString());
316+
void assertToString(String version) {
317+
assertEquals(version, of(version).toString());
267318
}
268319
}

0 commit comments

Comments
 (0)