Mercurial > hg4j
comparison test/org/tmatesoft/hg/test/TestRevisionSet.java @ 651:6e98d34eaca8
Push: tests (push to empty, push changes, respect secret)
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Mon, 01 Jul 2013 21:19:53 +0200 |
parents | 690e71d29bf6 |
children | 629a7370554c |
comparison
equal
deleted
inserted
replaced
650:3b275cc2d2aa | 651:6e98d34eaca8 |
---|---|
20 | 20 |
21 import org.junit.Rule; | 21 import org.junit.Rule; |
22 import org.junit.Test; | 22 import org.junit.Test; |
23 import org.tmatesoft.hg.core.Nodeid; | 23 import org.tmatesoft.hg.core.Nodeid; |
24 import org.tmatesoft.hg.internal.RevisionSet; | 24 import org.tmatesoft.hg.internal.RevisionSet; |
25 import org.tmatesoft.hg.repo.HgChangelog; | |
26 import org.tmatesoft.hg.repo.HgParentChildMap; | |
27 import org.tmatesoft.hg.repo.HgRepository; | |
25 | 28 |
26 /** | 29 /** |
27 * | 30 * |
28 * @author Artem Tikhomirov | 31 * @author Artem Tikhomirov |
29 * @author TMate Software Ltd. | 32 * @author TMate Software Ltd. |
37 public void testRegularSetOperations() { | 40 public void testRegularSetOperations() { |
38 Nodeid n1 = Nodeid.fromAscii("c75297c1786734589175c673db40e8ecaa032b09"); | 41 Nodeid n1 = Nodeid.fromAscii("c75297c1786734589175c673db40e8ecaa032b09"); |
39 Nodeid n2 = Nodeid.fromAscii("3b7d51ed4c65082f9235e3459e282d7ff723aa97"); | 42 Nodeid n2 = Nodeid.fromAscii("3b7d51ed4c65082f9235e3459e282d7ff723aa97"); |
40 Nodeid n3 = Nodeid.fromAscii("14dac192aa262feb8ff6645a102648498483a188"); | 43 Nodeid n3 = Nodeid.fromAscii("14dac192aa262feb8ff6645a102648498483a188"); |
41 Nodeid n4 = Nodeid.fromAscii("1deea2f332183c947937f6df988c2c6417efc217"); | 44 Nodeid n4 = Nodeid.fromAscii("1deea2f332183c947937f6df988c2c6417efc217"); |
42 RevisionSet a = f(n1, n2, n3); | 45 RevisionSet a = rs(n1, n2, n3); |
43 RevisionSet b = f(n3, n4); | 46 RevisionSet b = rs(n3, n4); |
44 RevisionSet union_ab = f(n1, n2, n3, n4); | 47 RevisionSet union_ab = rs(n1, n2, n3, n4); |
45 RevisionSet intersect_ab = f(n3); | 48 RevisionSet intersect_ab = rs(n3); |
46 RevisionSet subtract_ab = f(n1, n2); | 49 RevisionSet subtract_ab = rs(n1, n2); |
47 RevisionSet subtract_ba = f(n4); | 50 RevisionSet subtract_ba = rs(n4); |
48 RevisionSet symDiff_ab = f(n1, n2, n4); | 51 RevisionSet symDiff_ab = rs(n1, n2, n4); |
49 | 52 |
50 errorCollector.assertEquals(union_ab, a.union(b)); | 53 errorCollector.assertEquals(union_ab, a.union(b)); |
51 errorCollector.assertEquals(union_ab, b.union(a)); | 54 errorCollector.assertEquals(union_ab, b.union(a)); |
52 errorCollector.assertEquals(intersect_ab, a.intersect(b)); | 55 errorCollector.assertEquals(intersect_ab, a.intersect(b)); |
53 errorCollector.assertEquals(intersect_ab, b.intersect(a)); | 56 errorCollector.assertEquals(intersect_ab, b.intersect(a)); |
54 errorCollector.assertEquals(subtract_ab, a.subtract(b)); | 57 errorCollector.assertEquals(subtract_ab, a.subtract(b)); |
55 errorCollector.assertEquals(subtract_ba, b.subtract(a)); | 58 errorCollector.assertEquals(subtract_ba, b.subtract(a)); |
56 errorCollector.assertEquals(symDiff_ab, a.symmetricDifference(b)); | 59 errorCollector.assertEquals(symDiff_ab, a.symmetricDifference(b)); |
57 errorCollector.assertEquals(symDiff_ab, b.symmetricDifference(a)); | 60 errorCollector.assertEquals(symDiff_ab, b.symmetricDifference(a)); |
61 errorCollector.assertTrue(rs(n1, n2, n4).equals(rs(n4, n1, n2))); | |
62 errorCollector.assertTrue(rs().equals(rs())); | |
63 errorCollector.assertFalse(rs(n1).equals(rs(n2))); | |
64 } | |
65 | |
66 @Test | |
67 public void testRootsAndHeads() throws Exception { | |
68 final HgRepository repo = Configuration.get().find("test-annotate"); | |
69 Nodeid[] allRevs = allRevisions(repo); | |
70 HgParentChildMap<HgChangelog> parentHelper = new HgParentChildMap<HgChangelog>(repo.getChangelog()); | |
71 parentHelper.init(); | |
72 final RevisionSet complete = rs(allRevs); | |
73 // roots | |
74 errorCollector.assertEquals(rs(allRevs[0]), complete.roots(parentHelper)); | |
75 RevisionSet fromR2 = complete.subtract(rs(allRevs[0], allRevs[1])); | |
76 RevisionSet fromR3 = complete.subtract(rs(allRevs[0], allRevs[1], allRevs[2])); | |
77 errorCollector.assertEquals(rs(allRevs[2], allRevs[3]), fromR2.roots(parentHelper)); | |
78 errorCollector.assertEquals(rs(allRevs[3], allRevs[4], allRevs[5]), fromR3.roots(parentHelper)); | |
79 // heads | |
80 errorCollector.assertEquals(rs(allRevs[9], allRevs[7]), complete.heads(parentHelper)); | |
81 RevisionSet toR7 = complete.subtract(rs(allRevs[9], allRevs[8])); | |
82 errorCollector.assertEquals(rs(allRevs[7], allRevs[6], allRevs[4]), toR7.heads(parentHelper)); | |
83 RevisionSet withoutNoMergeBranch = toR7.subtract(rs(allRevs[5], allRevs[7])); | |
84 errorCollector.assertEquals(rs(allRevs[6], allRevs[4]), withoutNoMergeBranch.heads(parentHelper)); | |
85 errorCollector.assertEquals(complete.heads(parentHelper), complete.heads(parentHelper).heads(parentHelper)); | |
86 } | |
87 | |
88 @Test | |
89 public void testAncestorsAndChildren() throws Exception { | |
90 final HgRepository repo = Configuration.get().find("test-annotate"); | |
91 Nodeid[] allRevs = allRevisions(repo); | |
92 HgParentChildMap<HgChangelog> parentHelper = new HgParentChildMap<HgChangelog>(repo.getChangelog()); | |
93 parentHelper.init(); | |
94 final RevisionSet complete = rs(allRevs); | |
95 // children | |
96 errorCollector.assertTrue(rs().children(parentHelper).isEmpty()); | |
97 errorCollector.assertEquals(rs(allRevs[8], allRevs[9]), rs(allRevs[4]).children(parentHelper)); | |
98 // default branch and no-merge branch both from r2 | |
99 RevisionSet s1 = rs(allRevs[8], allRevs[9], allRevs[4], allRevs[5], allRevs[7]); | |
100 errorCollector.assertEquals(s1, rs(allRevs[2]).children(parentHelper)); | |
101 // ancestors | |
102 RevisionSet fromR2 = complete.subtract(rs(allRevs[0], allRevs[1])); | |
103 // no-merge branch and r9 are not in ancestors of r8 (as well as r8 itself) | |
104 RevisionSet s3 = fromR2.subtract(rs(allRevs[9], allRevs[5], allRevs[7], allRevs[8])); | |
105 errorCollector.assertEquals(s3, fromR2.ancestors(rs(allRevs[8]), parentHelper)); | |
106 // ancestors of no-merge branch | |
107 RevisionSet branchNoMerge = rs(allRevs[5], allRevs[7]); | |
108 errorCollector.assertEquals(rs(allRevs[0], allRevs[1], allRevs[2]), complete.ancestors(branchNoMerge, parentHelper)); | |
109 errorCollector.assertEquals(rs(allRevs[2]), fromR2.ancestors(branchNoMerge, parentHelper)); | |
110 } | |
111 | |
112 private static Nodeid[] allRevisions(HgRepository repo) { | |
113 Nodeid[] allRevs = new Nodeid[repo.getChangelog().getRevisionCount()]; | |
114 for (int i = 0; i < allRevs.length; i++) { | |
115 allRevs[i] = repo.getChangelog().getRevision(i); | |
116 } | |
117 return allRevs; | |
58 } | 118 } |
59 | 119 |
60 | 120 |
61 private static RevisionSet f(Nodeid... nodes) { | 121 private static RevisionSet rs(Nodeid... nodes) { |
62 return new RevisionSet(Arrays.asList(nodes)); | 122 return new RevisionSet(Arrays.asList(nodes)); |
63 } | 123 } |
64 } | 124 } |