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 }