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 }