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