1 package org.jivesoftware.util;
2 
3 import org.jivesoftware.util.Version.ReleaseStatus;
4 import org.junit.Test;
5 
6 import static org.hamcrest.CoreMatchers.is;
7 import static org.junit.Assert.assertEquals;
8 import static org.junit.Assert.assertFalse;
9 import static org.junit.Assert.assertThat;
10 import static org.junit.Assert.assertTrue;
11 
12 public class VersionTest {
13 
14     @Test
testVersionWithInitializingConstructor()15     public void testVersionWithInitializingConstructor() {
16         Version test = new Version(3, 2, 1, ReleaseStatus.Beta, 4);
17 
18         assertEquals(3, test.getMajor());
19         assertEquals(2, test.getMinor());
20         assertEquals(1, test.getMicro());
21 
22         assertEquals(ReleaseStatus.Beta, test.getStatus());
23         assertEquals(4, test.getStatusVersion());
24 
25         assertEquals("3.2.1 Beta 4", test.getVersionString());
26     }
27 
28     @Test
testVersionWithRegularStringConstructor()29     public void testVersionWithRegularStringConstructor() {
30         Version test = new Version("1.2.3 Beta 3");
31 
32         assertEquals(1, test.getMajor());
33         assertEquals(2, test.getMinor());
34         assertEquals(3, test.getMicro());
35 
36         assertEquals(ReleaseStatus.Beta, test.getStatus());
37         assertEquals(3, test.getStatusVersion());
38 
39         assertEquals("1.2.3 Beta 3", test.getVersionString());
40     }
41 
42     @Test
testVersionWithRegularStringConstructorB()43     public void testVersionWithRegularStringConstructorB() {
44         Version test = new Version("1.2.3 Release 3");
45 
46         assertEquals(1, test.getMajor());
47         assertEquals(2, test.getMinor());
48         assertEquals(3, test.getMicro());
49 
50         assertEquals(ReleaseStatus.Release, test.getStatus());
51         assertEquals(3, test.getStatusVersion());
52 
53         assertEquals("1.2.3 Release 3", test.getVersionString());
54     }
55 
56     @Test
testVersionWithNullStringConstructor()57     public void testVersionWithNullStringConstructor() {
58         Version test = new Version(null);
59 
60         assertEquals(0, test.getMajor());
61         assertEquals(0, test.getMinor());
62         assertEquals(0, test.getMicro());
63 
64         assertEquals(ReleaseStatus.Release, test.getStatus());
65         assertEquals(-1, test.getStatusVersion());
66 
67         assertEquals("0.0.0", test.getVersionString());
68     }
69 
70     @SuppressWarnings("EqualsWithItself")
71     @Test
testVersionComparisons()72     public void testVersionComparisons() {
73 
74         Version test123 = new Version("1.2.3");
75         Version test321 = new Version("3.2.1");
76         Version test322 = new Version("3.2.2");
77         Version test333 = new Version("3.3.3");
78         Version test300 = new Version("3.0.0");
79         Version test3100 = new Version("3.10.0");
80         Version test29999 = new Version("2.999.999");
81         Version test3100Alpha = new Version("3.10.0 Alpha");
82         Version test3100Beta = new Version("3.10.0 Beta");
83         Version test3100Beta1 = new Version("3.10.0 Beta 1");
84         Version test3100Beta2 = new Version("3.10.0 Beta 2");
85         assertEquals(-1, test123.compareTo(test321));
86         assertEquals(0, test123.compareTo(test123));
87         assertEquals(1, test321.compareTo(test123));
88 
89         assertTrue(test322.isNewerThan(test321));
90         assertFalse(test322.isNewerThan(test333));
91         assertFalse(test300.isNewerThan(test321));
92         assertTrue(test3100.isNewerThan(test333));
93         assertTrue(test3100.isNewerThan(test29999));
94         assertTrue(test300.isNewerThan(test29999));
95         assertTrue(test3100Beta.isNewerThan(test3100Alpha));
96         assertTrue(test3100Beta2.isNewerThan(test3100Beta1));
97     }
98 
99     @Test
testVersionEquals()100     public void testVersionEquals() {
101         Version version1 = new Version(3, 11, 0, Version.ReleaseStatus.Alpha, -1);
102         Version version2 = new Version(3, 11, 0, Version.ReleaseStatus.Alpha, -1);
103         assertEquals(version1, version2);
104         assertEquals((version1.compareTo(version2) == 0), version1.equals(version2));
105     }
106 
107     @Test
willVersionAThreeDigitSnapshot()108     public void willVersionAThreeDigitSnapshot() {
109         final String versionString = "1.2.3-SNAPSHOT";
110         Version test = new Version(versionString);
111 
112         assertThat(test.getMajor(), is(1));
113         assertThat(test.getMinor(), is(2));
114         assertThat(test.getMicro(), is(3));
115         assertThat(test.getStatusVersion(), is(-1));
116         assertThat(test.getStatus(), is(ReleaseStatus.Snapshot));
117         assertThat(test.getVersionString(),is(versionString));
118     }
119 
120     @Test
willVersionAFourDigitSnapshot()121     public void willVersionAFourDigitSnapshot() {
122         final String versionString = "1.2.3.4-snapshot";
123         Version test = new Version(versionString);
124 
125         assertThat(test.getMajor(), is(1));
126         assertThat(test.getMinor(), is(2));
127         assertThat(test.getMicro(), is(3));
128         assertThat(test.getStatusVersion(), is(4));
129         assertThat(test.getStatus(), is(ReleaseStatus.Snapshot));
130         assertThat(test.getVersionString(),is(versionString.toUpperCase()));
131 
132     }
133 
134     @Test
anAlphaVersionIgnoringTheReleaseStatusIsNotNewerThanTheReleaseVersion()135     public void anAlphaVersionIgnoringTheReleaseStatusIsNotNewerThanTheReleaseVersion() {
136 
137         final Version releaseVersion = new Version("4.3.0");
138         final Version alphaVersion = new Version("4.3.0 alpha");
139 
140         assertThat(releaseVersion.isNewerThan(alphaVersion), is(true));
141         assertThat(releaseVersion.isNewerThan(alphaVersion.ignoringReleaseStatus()), is(false));
142     }
143 
144     @Test
willVersionAFourDigitRelease()145     public void willVersionAFourDigitRelease() {
146 
147         final String versionString = "1.2.3.4";
148         final Version test = new Version(versionString);
149 
150         assertThat(test.getMajor(), is(1));
151         assertThat(test.getMinor(), is(2));
152         assertThat(test.getMicro(), is(3));
153         assertThat(test.getStatusVersion(), is(4));
154         assertThat(test.getStatus(), is(ReleaseStatus.Release));
155         assertThat(test.getVersionString(),is("1.2.3 Release 4"));
156     }
157 }
158