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 }