1 package com.aragost.javahg; 2 3 import org.junit.Assert; 4 import org.junit.Test; 5 6 public class HgVersionTest { 7 8 @Test 9 public void test() { 10 assertVersion(2, 1, null, false, null, "2.1"); 11 assertVersion(1, 9, 3, false, null, "1.9.3"); 12 assertVersion(11, 99, null, false, null, "11.99"); 13 assertVersion(11, 99, 78, false, null, "11.99.78"); 14 assertVersion(2, 0, null, true, null, "2.0-rc"); 15 assertVersion(2, 0, 9, true, null, "2.0.09-rc"); 16 } 17 18 @Test 19 public void testSuffix() { 20 assertVersion(2, 1, null, false, "abc", "2.1+abc"); 21 assertVersion(1, 9, 3, false, "abc", "1.9.3+abc"); 22 assertVersion(11, 99, null, false, "abc", "11.99+abc"); 23 assertVersion(11, 99, 78, false, "abc", "11.99.78+abc"); 24 assertVersion(2, 0, null, true, "abc", "2.0-rc+abc"); 25 assertVersion(2, 0, 9, true, "abc", "2.0.09-rc+abc"); 26 } 27 28 @Test 29 public void testEmptySuffix() { 30 assertVersion(2, 1, null, false, "", "2.1+"); 31 assertVersion(1, 9, 3, false, "", "1.9.3+"); 32 assertVersion(11, 99, null, false, "", "11.99+"); 33 assertVersion(11, 99, 78, false, "", "11.99.78+"); 34 assertVersion(2, 0, null, true, "", "2.0-rc+"); 35 assertVersion(2, 0, 9, true, "", "2.0.09-rc+"); 36 } 37 38 @Test 39 public void testInvalid() { 40 assertInvalid(""); 41 assertInvalid("1."); 42 assertInvalid("11."); 43 assertInvalid("11.2."); 44 assertInvalid("11.22."); 45 assertInvalid("-1.2.3"); 46 assertInvalid("1.-2.3"); 47 assertInvalid("1.2.-3"); 48 assertInvalid("1a.2"); 49 assertInvalid("001.002"); 50 assertInvalid("2.1-rcx"); 51 assertInvalid("2.1v6"); 52 assertInvalid(" 2.1"); 53 assertInvalid("2.1 "); 54 assertInvalid("2 .1"); 55 } 56 57 @Test 58 public void testCompareTo() { 59 assertCompare(0, "2.1", "2.1"); 60 assertCompare(0, "2.1-rc", "2.1-rc"); 61 assertCompare(0, "2.1-rc", "2.1-rc+asdf"); 62 assertCompare(-1, "1.9.1", "1.9.2"); 63 assertCompare(-1, "2.0", "2.1"); 64 assertCompare(-1, "2.0", "2.0.1"); 65 assertCompare(-1, "2.0-rc", "2.0"); 66 } 67 68 private void assertVersion(int major, int minor, Integer release, boolean isReleaseCandidate, String suffix, 69 String versionString) { 70 HgVersion v = HgVersion.fromString(versionString); 71 Assert.assertEquals(major, v.getMajor()); 72 Assert.assertEquals(minor, v.getMinor()); 73 Assert.assertEquals(release, v.getRelease()); 74 Assert.assertEquals(isReleaseCandidate, v.isReleaseCandidate()); 75 Assert.assertEquals(suffix, v.getSuffix()); 76 } 77 78 private void assertInvalid(String versionString) { 79 try { 80 HgVersion.fromString(versionString); 81 Assert.fail("Version: '" + versionString + "' was accepted but is invalid is invalid"); 82 } catch (IllegalArgumentException e) { 83 84 } 85 } 86 87 private void assertCompare(int expected, String first, String second) { 88 HgVersion a = HgVersion.fromString(first); 89 HgVersion b = HgVersion.fromString(second); 90 int n = a.compareTo(b); 91 if (n > 0) { 92 n = 1; 93 } else if (n < 0) { 94 n = -1; 95 } 96 Assert.assertEquals(expected, n); 97 98 n = b.compareTo(a); 99 if (n > 0) { 100 n = 1; 101 } else if (n < 0) { 102 n = -1; 103 } 104 Assert.assertEquals("Reverted order of " + first + " and " + second, -expected, n); 105 106 } 107 108 }