Guest User

Untitled

a guest
Nov 17th, 2017
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.36 KB | None | 0 0
  1. class StringUtil {
  2.  
  3. /**
  4. * Compare version.
  5. *
  6. * versionA > versionB = 1
  7. * versionA == versionB = 0
  8. * versionA < versionB = -1
  9. *
  10. * @return a negative integer, zero, or a positive integer as this object
  11. * is less than, equal to, or greater than the specified object.
  12. */
  13. public static int versionCompare(String versionA, String versionB) throws NumberFormatException {
  14. if(Strings.isNullOrEmpty(versionA) || Strings.isNullOrEmpty(versionB))
  15. if (Strings.isNullOrEmpty(versionA))
  16. return Strings.isNullOrEmpty(versionB) ? 0 : -1;
  17. else
  18. return 1;
  19.  
  20. String[] verA = versionA.split("\\.");
  21. String[] verB = versionB.split("\\.");
  22.  
  23. for (int i = 0; i < verA.length; i++) {
  24. if(i >= verB.length)
  25. return 1;
  26.  
  27. int a = Integer.parseInt(verA[i]);
  28. int b = Integer.parseInt(verB[i]);
  29.  
  30. if(a == b) continue;
  31. return a < b ? -1 : 1;
  32. }
  33.  
  34. return verA.length == verB.length ? 0 : -1;
  35. }
  36.  
  37. @Test
  38. public void versionCompare() throws Exception {
  39. assertEquals(StringUtil.versionCompare(null, null), 0);
  40. assertEquals(StringUtil.versionCompare(null, "1.2"), -1);
  41. assertEquals(StringUtil.versionCompare("1.2", null), 1);
  42. assertEquals(StringUtil.versionCompare("", ""), 0);
  43. assertEquals(StringUtil.versionCompare(null, ""), 0);
  44. assertEquals(StringUtil.versionCompare("", null), 0);
  45. assertEquals(StringUtil.versionCompare(null, "ver"), -1);
  46. assertEquals(StringUtil.versionCompare("ver", null), 1);
  47.  
  48. assertEquals(StringUtil.versionCompare("1.2", "1.1"), 1);
  49. assertEquals(StringUtil.versionCompare("1.2", "1.2"), 0);
  50. assertEquals(StringUtil.versionCompare("1.2", "1.3"), -1);
  51.  
  52. assertEquals(StringUtil.versionCompare("1.2", "1.3.1"), -1);
  53. assertEquals(StringUtil.versionCompare("1.2", "1.2.1"), -1);
  54. assertEquals(StringUtil.versionCompare("1.2.1", "1.3"), -1);
  55.  
  56. exception.expect(NumberFormatException.class);
  57. StringUtil.versionCompare("1.i.1", "1.3");
  58.  
  59. exception.expect(NumberFormatException.class);
  60. StringUtil.versionCompare("versionA", "versionB");
  61.  
  62. exception.expect(NumberFormatException.class);
  63. StringUtil.versionCompare("1-2-1", "1-3");
  64. }
  65. }
Add Comment
Please, Sign In to add comment