1717package io .microsphere .util ;
1818
1919import io .microsphere .AbstractTestCase ;
20- import io .microsphere .util .Version .Operator ;
2120import org .junit .jupiter .api .Test ;
2221
2322import static io .microsphere .constants .SymbolConstants .DOT ;
23+ import static io .microsphere .constants .SymbolConstants .HYPHEN ;
2424import 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 ;
3025import static io .microsphere .util .Version .getValue ;
3126import static io .microsphere .util .Version .getVersion ;
3227import 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