View Javadoc

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 }