Mercurial > hg4j
comparison test/org/tmatesoft/hg/test/TestRevisionSet.java @ 653:629a7370554c
Tests for recent changes in HgParentChildMap and RepositoryComparator (outgoing to respect drafts and Issue 47)
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Wed, 03 Jul 2013 14:38:30 +0200 |
parents | 6e98d34eaca8 |
children |
comparison
equal
deleted
inserted
replaced
652:cd77bf51b562 | 653:629a7370554c |
---|---|
13 * For information on how to redistribute this software under | 13 * For information on how to redistribute this software under |
14 * the terms of a license other than GNU General Public License | 14 * the terms of a license other than GNU General Public License |
15 * contact TMate Software at support@hg4j.com | 15 * contact TMate Software at support@hg4j.com |
16 */ | 16 */ |
17 package org.tmatesoft.hg.test; | 17 package org.tmatesoft.hg.test; |
18 | |
19 import java.util.Arrays; | |
20 | 18 |
21 import org.junit.Rule; | 19 import org.junit.Rule; |
22 import org.junit.Test; | 20 import org.junit.Test; |
23 import org.tmatesoft.hg.core.Nodeid; | 21 import org.tmatesoft.hg.core.Nodeid; |
24 import org.tmatesoft.hg.internal.RevisionSet; | 22 import org.tmatesoft.hg.internal.RevisionSet; |
40 public void testRegularSetOperations() { | 38 public void testRegularSetOperations() { |
41 Nodeid n1 = Nodeid.fromAscii("c75297c1786734589175c673db40e8ecaa032b09"); | 39 Nodeid n1 = Nodeid.fromAscii("c75297c1786734589175c673db40e8ecaa032b09"); |
42 Nodeid n2 = Nodeid.fromAscii("3b7d51ed4c65082f9235e3459e282d7ff723aa97"); | 40 Nodeid n2 = Nodeid.fromAscii("3b7d51ed4c65082f9235e3459e282d7ff723aa97"); |
43 Nodeid n3 = Nodeid.fromAscii("14dac192aa262feb8ff6645a102648498483a188"); | 41 Nodeid n3 = Nodeid.fromAscii("14dac192aa262feb8ff6645a102648498483a188"); |
44 Nodeid n4 = Nodeid.fromAscii("1deea2f332183c947937f6df988c2c6417efc217"); | 42 Nodeid n4 = Nodeid.fromAscii("1deea2f332183c947937f6df988c2c6417efc217"); |
45 RevisionSet a = rs(n1, n2, n3); | 43 Nodeid[] nodes = { n1, n2, n3 }; |
46 RevisionSet b = rs(n3, n4); | 44 RevisionSet a = new RevisionSet(nodes); |
47 RevisionSet union_ab = rs(n1, n2, n3, n4); | 45 Nodeid[] nodes1 = { n3, n4 }; |
48 RevisionSet intersect_ab = rs(n3); | 46 RevisionSet b = new RevisionSet(nodes1); |
49 RevisionSet subtract_ab = rs(n1, n2); | 47 Nodeid[] nodes2 = { n1, n2, n3, n4 }; |
50 RevisionSet subtract_ba = rs(n4); | 48 RevisionSet union_ab = new RevisionSet(nodes2); |
51 RevisionSet symDiff_ab = rs(n1, n2, n4); | 49 Nodeid[] nodes3 = { n3 }; |
50 RevisionSet intersect_ab = new RevisionSet(nodes3); | |
51 Nodeid[] nodes4 = { n1, n2 }; | |
52 RevisionSet subtract_ab = new RevisionSet(nodes4); | |
53 Nodeid[] nodes5 = { n4 }; | |
54 RevisionSet subtract_ba = new RevisionSet(nodes5); | |
55 Nodeid[] nodes6 = { n1, n2, n4 }; | |
56 RevisionSet symDiff_ab = new RevisionSet(nodes6); | |
52 | 57 |
53 errorCollector.assertEquals(union_ab, a.union(b)); | 58 errorCollector.assertEquals(union_ab, a.union(b)); |
54 errorCollector.assertEquals(union_ab, b.union(a)); | 59 errorCollector.assertEquals(union_ab, b.union(a)); |
55 errorCollector.assertEquals(intersect_ab, a.intersect(b)); | 60 errorCollector.assertEquals(intersect_ab, a.intersect(b)); |
56 errorCollector.assertEquals(intersect_ab, b.intersect(a)); | 61 errorCollector.assertEquals(intersect_ab, b.intersect(a)); |
57 errorCollector.assertEquals(subtract_ab, a.subtract(b)); | 62 errorCollector.assertEquals(subtract_ab, a.subtract(b)); |
58 errorCollector.assertEquals(subtract_ba, b.subtract(a)); | 63 errorCollector.assertEquals(subtract_ba, b.subtract(a)); |
59 errorCollector.assertEquals(symDiff_ab, a.symmetricDifference(b)); | 64 errorCollector.assertEquals(symDiff_ab, a.symmetricDifference(b)); |
60 errorCollector.assertEquals(symDiff_ab, b.symmetricDifference(a)); | 65 errorCollector.assertEquals(symDiff_ab, b.symmetricDifference(a)); |
61 errorCollector.assertTrue(rs(n1, n2, n4).equals(rs(n4, n1, n2))); | 66 Nodeid[] nodes7 = { n1, n2, n4 }; |
62 errorCollector.assertTrue(rs().equals(rs())); | 67 Nodeid[] nodes8 = { n4, n1, n2 }; |
63 errorCollector.assertFalse(rs(n1).equals(rs(n2))); | 68 errorCollector.assertTrue(new RevisionSet(nodes7).equals(new RevisionSet(nodes8))); |
69 Nodeid[] nodes9 = {}; | |
70 Nodeid[] nodes10 = {}; | |
71 errorCollector.assertTrue(new RevisionSet(nodes9).equals(new RevisionSet(nodes10))); | |
72 Nodeid[] nodes11 = { n1 }; | |
73 Nodeid[] nodes12 = { n2 }; | |
74 errorCollector.assertFalse(new RevisionSet(nodes11).equals(new RevisionSet(nodes12))); | |
64 } | 75 } |
65 | 76 |
66 @Test | 77 @Test |
67 public void testRootsAndHeads() throws Exception { | 78 public void testRootsAndHeads() throws Exception { |
68 final HgRepository repo = Configuration.get().find("test-annotate"); | 79 final HgRepository repo = Configuration.get().find("test-annotate"); |
69 Nodeid[] allRevs = allRevisions(repo); | 80 Nodeid[] allRevs = RepoUtils.allRevisions(repo); |
70 HgParentChildMap<HgChangelog> parentHelper = new HgParentChildMap<HgChangelog>(repo.getChangelog()); | 81 HgParentChildMap<HgChangelog> parentHelper = new HgParentChildMap<HgChangelog>(repo.getChangelog()); |
71 parentHelper.init(); | 82 parentHelper.init(); |
72 final RevisionSet complete = rs(allRevs); | 83 final RevisionSet complete = new RevisionSet(allRevs); |
84 Nodeid[] nodes = { allRevs[0] }; | |
73 // roots | 85 // roots |
74 errorCollector.assertEquals(rs(allRevs[0]), complete.roots(parentHelper)); | 86 errorCollector.assertEquals(new RevisionSet(nodes), complete.roots(parentHelper)); |
75 RevisionSet fromR2 = complete.subtract(rs(allRevs[0], allRevs[1])); | 87 Nodeid[] nodes1 = { allRevs[0], allRevs[1] }; |
76 RevisionSet fromR3 = complete.subtract(rs(allRevs[0], allRevs[1], allRevs[2])); | 88 RevisionSet fromR2 = complete.subtract(new RevisionSet(nodes1)); |
77 errorCollector.assertEquals(rs(allRevs[2], allRevs[3]), fromR2.roots(parentHelper)); | 89 Nodeid[] nodes2 = { allRevs[0], allRevs[1], allRevs[2] }; |
78 errorCollector.assertEquals(rs(allRevs[3], allRevs[4], allRevs[5]), fromR3.roots(parentHelper)); | 90 RevisionSet fromR3 = complete.subtract(new RevisionSet(nodes2)); |
91 Nodeid[] nodes3 = { allRevs[2], allRevs[3] }; | |
92 errorCollector.assertEquals(new RevisionSet(nodes3), fromR2.roots(parentHelper)); | |
93 Nodeid[] nodes4 = { allRevs[3], allRevs[4], allRevs[5] }; | |
94 errorCollector.assertEquals(new RevisionSet(nodes4), fromR3.roots(parentHelper)); | |
95 Nodeid[] nodes5 = { allRevs[9], allRevs[7] }; | |
79 // heads | 96 // heads |
80 errorCollector.assertEquals(rs(allRevs[9], allRevs[7]), complete.heads(parentHelper)); | 97 errorCollector.assertEquals(new RevisionSet(nodes5), complete.heads(parentHelper)); |
81 RevisionSet toR7 = complete.subtract(rs(allRevs[9], allRevs[8])); | 98 Nodeid[] nodes6 = { allRevs[9], allRevs[8] }; |
82 errorCollector.assertEquals(rs(allRevs[7], allRevs[6], allRevs[4]), toR7.heads(parentHelper)); | 99 RevisionSet toR7 = complete.subtract(new RevisionSet(nodes6)); |
83 RevisionSet withoutNoMergeBranch = toR7.subtract(rs(allRevs[5], allRevs[7])); | 100 Nodeid[] nodes7 = { allRevs[7], allRevs[6], allRevs[4] }; |
84 errorCollector.assertEquals(rs(allRevs[6], allRevs[4]), withoutNoMergeBranch.heads(parentHelper)); | 101 errorCollector.assertEquals(new RevisionSet(nodes7), toR7.heads(parentHelper)); |
102 Nodeid[] nodes8 = { allRevs[5], allRevs[7] }; | |
103 RevisionSet withoutNoMergeBranch = toR7.subtract(new RevisionSet(nodes8)); | |
104 Nodeid[] nodes9 = { allRevs[6], allRevs[4] }; | |
105 errorCollector.assertEquals(new RevisionSet(nodes9), withoutNoMergeBranch.heads(parentHelper)); | |
85 errorCollector.assertEquals(complete.heads(parentHelper), complete.heads(parentHelper).heads(parentHelper)); | 106 errorCollector.assertEquals(complete.heads(parentHelper), complete.heads(parentHelper).heads(parentHelper)); |
86 } | 107 } |
87 | 108 |
88 @Test | 109 @Test |
89 public void testAncestorsAndChildren() throws Exception { | 110 public void testAncestorsAndChildren() throws Exception { |
90 final HgRepository repo = Configuration.get().find("test-annotate"); | 111 final HgRepository repo = Configuration.get().find("test-annotate"); |
91 Nodeid[] allRevs = allRevisions(repo); | 112 Nodeid[] allRevs = RepoUtils.allRevisions(repo); |
92 HgParentChildMap<HgChangelog> parentHelper = new HgParentChildMap<HgChangelog>(repo.getChangelog()); | 113 HgParentChildMap<HgChangelog> parentHelper = new HgParentChildMap<HgChangelog>(repo.getChangelog()); |
93 parentHelper.init(); | 114 parentHelper.init(); |
94 final RevisionSet complete = rs(allRevs); | 115 final RevisionSet complete = new RevisionSet(allRevs); |
116 Nodeid[] nodes = {}; | |
95 // children | 117 // children |
96 errorCollector.assertTrue(rs().children(parentHelper).isEmpty()); | 118 errorCollector.assertTrue(new RevisionSet(nodes).children(parentHelper).isEmpty()); |
97 errorCollector.assertEquals(rs(allRevs[8], allRevs[9]), rs(allRevs[4]).children(parentHelper)); | 119 Nodeid[] nodes1 = { allRevs[8], allRevs[9] }; |
120 Nodeid[] nodes2 = { allRevs[4] }; | |
121 errorCollector.assertEquals(new RevisionSet(nodes1), new RevisionSet(nodes2).children(parentHelper)); | |
122 Nodeid[] nodes3 = { allRevs[8], allRevs[9], allRevs[4], allRevs[5], allRevs[7] }; | |
98 // default branch and no-merge branch both from r2 | 123 // default branch and no-merge branch both from r2 |
99 RevisionSet s1 = rs(allRevs[8], allRevs[9], allRevs[4], allRevs[5], allRevs[7]); | 124 RevisionSet s1 = new RevisionSet(nodes3); |
100 errorCollector.assertEquals(s1, rs(allRevs[2]).children(parentHelper)); | 125 Nodeid[] nodes4 = { allRevs[2] }; |
126 errorCollector.assertEquals(s1, new RevisionSet(nodes4).children(parentHelper)); | |
127 Nodeid[] nodes5 = { allRevs[0], allRevs[1] }; | |
101 // ancestors | 128 // ancestors |
102 RevisionSet fromR2 = complete.subtract(rs(allRevs[0], allRevs[1])); | 129 RevisionSet fromR2 = complete.subtract(new RevisionSet(nodes5)); |
130 Nodeid[] nodes6 = { allRevs[9], allRevs[5], allRevs[7], allRevs[8] }; | |
103 // no-merge branch and r9 are not in ancestors of r8 (as well as r8 itself) | 131 // 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])); | 132 RevisionSet s3 = fromR2.subtract(new RevisionSet(nodes6)); |
105 errorCollector.assertEquals(s3, fromR2.ancestors(rs(allRevs[8]), parentHelper)); | 133 Nodeid[] nodes7 = { allRevs[8] }; |
134 errorCollector.assertEquals(s3, fromR2.ancestors(new RevisionSet(nodes7), parentHelper)); | |
135 Nodeid[] nodes8 = { allRevs[5], allRevs[7] }; | |
106 // ancestors of no-merge branch | 136 // ancestors of no-merge branch |
107 RevisionSet branchNoMerge = rs(allRevs[5], allRevs[7]); | 137 RevisionSet branchNoMerge = new RevisionSet(nodes8); |
108 errorCollector.assertEquals(rs(allRevs[0], allRevs[1], allRevs[2]), complete.ancestors(branchNoMerge, parentHelper)); | 138 Nodeid[] nodes9 = { allRevs[0], allRevs[1], allRevs[2] }; |
109 errorCollector.assertEquals(rs(allRevs[2]), fromR2.ancestors(branchNoMerge, parentHelper)); | 139 errorCollector.assertEquals(new RevisionSet(nodes9), complete.ancestors(branchNoMerge, parentHelper)); |
110 } | 140 Nodeid[] nodes10 = { allRevs[2] }; |
111 | 141 errorCollector.assertEquals(new RevisionSet(nodes10), fromR2.ancestors(branchNoMerge, parentHelper)); |
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; | |
118 } | |
119 | |
120 | |
121 private static RevisionSet rs(Nodeid... nodes) { | |
122 return new RevisionSet(Arrays.asList(nodes)); | |
123 } | 142 } |
124 } | 143 } |