Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

VersionTest.java 9.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  1. /*
  2. * Copyright (c) 2006-2015 DMDirc Developers
  3. *
  4. * Permission is hereby granted, free of charge, to any person obtaining a copy
  5. * of this software and associated documentation files (the "Software"), to deal
  6. * in the Software without restriction, including without limitation the rights
  7. * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  8. * copies of the Software, and to permit persons to whom the Software is
  9. * furnished to do so, subject to the following conditions:
  10. *
  11. * The above copyright notice and this permission notice shall be included in
  12. * all copies or substantial portions of the Software.
  13. *
  14. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  15. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  16. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  17. * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  18. * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  19. * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  20. * SOFTWARE.
  21. */
  22. package com.dmdirc.updater;
  23. import org.junit.Test;
  24. import static org.junit.Assert.*;
  25. public class VersionTest {
  26. @Test
  27. public void testConstructorWithNoArgsCreatesInvalidVersion() {
  28. assertFalse(new Version().isValid());
  29. }
  30. @Test
  31. public void testToStringWhenGivenInt() {
  32. assertEquals("123", new Version(123).toString());
  33. }
  34. @Test
  35. public void testIsValidWhenGivenInt() {
  36. assertTrue(new Version(123).isValid());
  37. }
  38. @Test
  39. public void testToStringWhenGivenIntAsString() {
  40. assertEquals("123", new Version("123").toString());
  41. }
  42. @Test
  43. public void testIsValidWhenGivenIntAsString() {
  44. assertTrue(new Version("123").isValid());
  45. }
  46. @Test
  47. public void testToStringWhenGivenVersionString() {
  48. assertEquals("0.1.2rc3", new Version("0.1.2rc3").toString());
  49. }
  50. @Test
  51. public void testIsValidWhenGivenVersionString() {
  52. assertTrue(new Version("0.1.2rc3").isValid());
  53. }
  54. @Test
  55. public void testIsInvalidWhenGivenOtherString() {
  56. assertFalse(new Version("Hello!").isValid());
  57. }
  58. @Test
  59. public void testIsInvalidWhenGivenInvalidGitHash() {
  60. assertFalse(new Version("0.1.3-12-gABCDEFG").isValid());
  61. assertFalse(new Version("0.1.3-12-g123").isValid());
  62. assertFalse(new Version("0.1.3-12-g123123123").isValid());
  63. }
  64. @Test
  65. public void testInvalidVersionsAreEqual() {
  66. assertEquals(0, new Version().compareTo(new Version()));
  67. }
  68. @Test
  69. public void testEqualNumericalVersionsAreEqual() {
  70. assertEquals(0, new Version(123).compareTo(new Version(123)));
  71. }
  72. @Test
  73. public void testEqualNumericalAndStringVersionsAreEqual() {
  74. assertEquals(0, new Version(123).compareTo(new Version("123")));
  75. }
  76. @Test
  77. public void testStringVersionsAreNewerThanNumericalVersions() {
  78. assertTrue(new Version(123).compareTo(new Version("0.1")) < 0);
  79. }
  80. @Test
  81. public void testNumericalVersionsAreOlderThanStringVersions() {
  82. assertTrue(new Version("0.1").compareTo(new Version(123)) > 0);
  83. }
  84. @Test
  85. public void testGreaterNumericalVersionIsNewer() {
  86. assertTrue(new Version(123).compareTo(new Version(124)) < 0);
  87. }
  88. @Test
  89. public void testLesserNumericalVersionIsOlder() {
  90. assertTrue(new Version(124).compareTo(new Version(123)) > 0);
  91. }
  92. @Test
  93. public void testEqualStringVersionsAreEqual() {
  94. assertEquals(0, new Version("1.2.3").compareTo(new Version("1.2.3")));
  95. }
  96. @Test
  97. public void testLongerStringVersionsAreNewer() {
  98. assertTrue(new Version("1.2.3").compareTo(new Version("1.2.3.1")) < 0);
  99. }
  100. @Test
  101. public void testHigherStringVersionsAreNewer() {
  102. assertTrue(new Version("1.2.3").compareTo(new Version("1.2.4")) < 0);
  103. assertTrue(new Version("1.2.3").compareTo(new Version("1.3.3")) < 0);
  104. assertTrue(new Version("1.2.3").compareTo(new Version("2.2.3")) < 0);
  105. assertTrue(new Version("1.2.3").compareTo(new Version("2.0")) < 0);
  106. }
  107. @Test
  108. public void testHigherStringVersionsAreNewerWithSuffixes() {
  109. assertTrue(new Version("1.2.3rc2").compareTo(new Version("1.2.4a1")) < 0);
  110. assertTrue(new Version("1.2.3b1").compareTo(new Version("1.3.3m8")) < 0);
  111. assertTrue(new Version("1.2.3m8").compareTo(new Version("2.2.3rc2")) < 0);
  112. assertTrue(new Version("1.2.3a6").compareTo(new Version("2.0b4")) < 0);
  113. }
  114. @Test
  115. public void testShorterStringVersionsAreOlder() {
  116. assertTrue(new Version("1.2.3.1").compareTo(new Version("1.2.3")) > 0);
  117. }
  118. @Test
  119. public void testLowerStringVersionsAreOlder() {
  120. assertTrue(new Version("1.2.4").compareTo(new Version("1.2.3")) > 0);
  121. assertTrue(new Version("1.3.3").compareTo(new Version("1.2.3")) > 0);
  122. assertTrue(new Version("2.2.3").compareTo(new Version("1.2.3")) > 0);
  123. assertTrue(new Version("2.0").compareTo(new Version("1.2.3")) > 0);
  124. }
  125. @Test
  126. public void testLowerStringVersionsAreOlderWithSuffixes() {
  127. assertTrue(new Version("1.2.4a1").compareTo(new Version("1.2.3rc2")) > 0);
  128. assertTrue(new Version("1.3.3m8").compareTo(new Version("1.2.3b1")) > 0);
  129. assertTrue(new Version("2.2.3rc2").compareTo(new Version("1.2.3m8")) > 0);
  130. assertTrue(new Version("2.0b4").compareTo(new Version("1.2.3a6")) > 0);
  131. }
  132. @Test
  133. public void testHigherGitSuffixesAreNewer() {
  134. assertTrue(new Version("1.2-17-gabcdeff").compareTo(new Version("1.2-18-gabcdeff")) < 0);
  135. }
  136. @Test
  137. public void testLowerGitSuffixesAreOlder() {
  138. assertTrue(new Version("1.2-18-gabcdeff").compareTo(new Version("1.2-17-gabcdeff")) > 0);
  139. }
  140. @Test
  141. public void testEqualVersionsWithDifferentGitHashesAreEqual() {
  142. assertEquals(0, new Version("1.2-17-g1234567").compareTo(new Version("1.2-17-gabcdeff")));
  143. }
  144. @Test
  145. public void testHigherSuffixesAreNewer() {
  146. assertTrue(new Version("1.2.3rc1").compareTo(new Version("1.2.3rc2")) < 0);
  147. }
  148. @Test
  149. public void testBetasAreNewerThanAlphas() {
  150. assertTrue(new Version("1.2.3a8").compareTo(new Version("1.2.3b5")) < 0);
  151. }
  152. @Test
  153. public void testAlphasAreNewerThanMilestones() {
  154. assertTrue(new Version("1.2.3m8").compareTo(new Version("1.2.3a1")) < 0);
  155. }
  156. @Test
  157. public void testReleaseCandidatesAreNewerThanBetas() {
  158. assertTrue(new Version("1.2.3b8").compareTo(new Version("1.2.3rc1")) < 0);
  159. }
  160. @Test
  161. public void testReleasesAreNewerThanReleaseCandidates() {
  162. assertTrue(new Version("1.2.3rc8").compareTo(new Version("1.2.3")) < 0);
  163. }
  164. @Test
  165. public void testHigherSuffixesAreNewerWithMilestones() {
  166. assertTrue(new Version("1.2.3m1rc1").compareTo(new Version("1.2.3m1rc2")) < 0);
  167. }
  168. @Test
  169. public void testBetasAreNewerThanAlphasWithMilestones() {
  170. assertTrue(new Version("1.2.3m1a8").compareTo(new Version("1.2.3m1b5")) < 0);
  171. }
  172. @Test
  173. public void testReleaseCandidatesAreNewerThanBetasWithMilestones() {
  174. assertTrue(new Version("1.2.3m1b8").compareTo(new Version("1.2.3m1rc1")) < 0);
  175. }
  176. @Test
  177. public void testReleasesAreNewerThanReleaseCandidatesWithMilestones() {
  178. assertTrue(new Version("1.2.3m1rc8").compareTo(new Version("1.2.3m1")) < 0);
  179. }
  180. @Test
  181. public void testLowerSuffixesAreOlder() {
  182. assertTrue(new Version("1.2.3rc2").compareTo(new Version("1.2.3rc1")) > 0);
  183. }
  184. @Test
  185. public void testAlphasAreOlderThanBetas() {
  186. assertTrue(new Version("1.2.3b5").compareTo(new Version("1.2.3a8")) > 0);
  187. }
  188. @Test
  189. public void testMilestonesAreOlderThanAlphas() {
  190. assertTrue(new Version("1.2.3a1").compareTo(new Version("1.2.3m8")) > 0);
  191. }
  192. @Test
  193. public void testBetasAreOlderThanReleaseCandidates() {
  194. assertTrue(new Version("1.2.3rc1").compareTo(new Version("1.2.3b8")) > 0);
  195. }
  196. @Test
  197. public void testReleaseCandidatesAreOlderThanReleases() {
  198. assertTrue(new Version("1.2.3").compareTo(new Version("1.2.3rc8")) > 0);
  199. }
  200. @Test
  201. public void testLowerSuffixesAreOlderWithMilestones() {
  202. assertTrue(new Version("1.2.3m1rc2").compareTo(new Version("1.2.3m1rc1")) > 0);
  203. }
  204. @Test
  205. public void testAlphasAreOlderThanBetasWithMilestones() {
  206. assertTrue(new Version("1.2.3m1b5").compareTo(new Version("1.2.3m1a8")) > 0);
  207. }
  208. @Test
  209. public void testBetasAreOlderThanReleaseCandidatesWithMilestones() {
  210. assertTrue(new Version("1.2.3m1rc1").compareTo(new Version("1.2.3m1b8")) > 0);
  211. }
  212. @Test
  213. public void testReleaseCandidatesAreOlderThanReleasesWithMilestones() {
  214. assertTrue(new Version("1.2.3m1").compareTo(new Version("1.2.3m1rc8")) > 0);
  215. }
  216. @Test
  217. public void testHashCodesEqualWhenIntVersionsEqual() {
  218. assertEquals(new Version(1).hashCode(), new Version(1).hashCode());
  219. }
  220. @Test
  221. public void testHashCodesEqualWhenStringVersionsEqual() {
  222. assertEquals(new Version("0.1").hashCode(), new Version("0.1").hashCode());
  223. }
  224. }