comparison test/org/tmatesoft/hg/test/TestRevisionMaps.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
children a937e63b6e02
comparison
equal deleted inserted replaced
652:cd77bf51b562 653:629a7370554c
1 /*
2 * Copyright (c) 2013 TMate Software Ltd
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; version 2 of the License.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * For information on how to redistribute this software under
14 * the terms of a license other than GNU General Public License
15 * contact TMate Software at support@hg4j.com
16 */
17 package org.tmatesoft.hg.test;
18
19 import java.util.Arrays;
20 import java.util.Collections;
21 import java.util.HashSet;
22
23 import org.junit.Rule;
24 import org.junit.Test;
25 import org.tmatesoft.hg.core.HgException;
26 import org.tmatesoft.hg.core.Nodeid;
27 import org.tmatesoft.hg.repo.HgChangelog;
28 import org.tmatesoft.hg.repo.HgParentChildMap;
29 import org.tmatesoft.hg.repo.HgRepository;
30
31 /**
32 *
33 * @author Artem Tikhomirov
34 * @author TMate Software Ltd.
35 */
36 public class TestRevisionMaps {
37
38 @Rule
39 public ErrorCollectorExt errorCollector = new ErrorCollectorExt();
40
41 @Test
42 public void testParentChildMap() throws HgException {
43 final HgRepository repo = Configuration.get().find("test-annotate");
44 Nodeid[] allRevs = RepoUtils.allRevisions(repo);
45 HgParentChildMap<HgChangelog> parentHelper = new HgParentChildMap<HgChangelog>(repo.getChangelog());
46 parentHelper.init();
47 errorCollector.assertEquals(Arrays.asList(allRevs), parentHelper.all());
48 for (Nodeid n : allRevs) {
49 errorCollector.assertTrue(parentHelper.knownNode(n));
50 // parents
51 final Nodeid p1 = parentHelper.safeFirstParent(n);
52 final Nodeid p2 = parentHelper.safeSecondParent(n);
53 errorCollector.assertFalse(p1 == null);
54 errorCollector.assertFalse(p2 == null);
55 errorCollector.assertEquals(p1.isNull() ? null : p1, parentHelper.firstParent(n));
56 errorCollector.assertEquals(p2.isNull() ? null : p2, parentHelper.secondParent(n));
57 HashSet<Nodeid> parents = new HashSet<Nodeid>();
58 boolean modified = parentHelper.appendParentsOf(n, parents);
59 errorCollector.assertEquals(p1.isNull() && p2.isNull(), !modified);
60 HashSet<Nodeid> cp = new HashSet<Nodeid>();
61 cp.add(parentHelper.firstParent(n));
62 cp.add(parentHelper.secondParent(n));
63 cp.remove(null);
64 errorCollector.assertEquals(cp, parents);
65 modified = parentHelper.appendParentsOf(n, parents);
66 errorCollector.assertFalse(modified);
67 //
68 // isChild, hasChildren, childrenOf, directChildren
69 if (!p1.isNull()) {
70 errorCollector.assertTrue(parentHelper.isChild(p1, n));
71 errorCollector.assertTrue(parentHelper.hasChildren(p1));
72 errorCollector.assertTrue(parentHelper.childrenOf(Collections.singleton(p1)).contains(n));
73 errorCollector.assertTrue(parentHelper.directChildren(p1).contains(n));
74 }
75 if (!p2.isNull()) {
76 errorCollector.assertTrue(parentHelper.isChild(p2, n));
77 errorCollector.assertTrue(parentHelper.hasChildren(p2));
78 errorCollector.assertTrue(parentHelper.childrenOf(Collections.singleton(p2)).contains(n));
79 errorCollector.assertTrue(parentHelper.directChildren(p2).contains(n));
80 }
81 errorCollector.assertFalse(parentHelper.isChild(n, p1));
82 errorCollector.assertFalse(parentHelper.isChild(n, p2));
83 //
84
85 }
86 // heads
87 errorCollector.assertEquals(Arrays.asList(allRevs[7], allRevs[9]), parentHelper.heads());
88 // isChild
89 errorCollector.assertTrue(parentHelper.isChild(allRevs[1], allRevs[9]));
90 errorCollector.assertTrue(parentHelper.isChild(allRevs[0], allRevs[7]));
91 errorCollector.assertFalse(parentHelper.isChild(allRevs[4], allRevs[7]));
92 errorCollector.assertFalse(parentHelper.isChild(allRevs[2], allRevs[6]));
93 // childrenOf
94 errorCollector.assertEquals(Arrays.asList(allRevs[7]), parentHelper.childrenOf(Collections.singleton(allRevs[5])));
95 errorCollector.assertEquals(Arrays.asList(allRevs[8], allRevs[9]), parentHelper.childrenOf(Arrays.asList(allRevs[4], allRevs[6])));
96 errorCollector.assertEquals(Arrays.asList(allRevs[6], allRevs[8], allRevs[9]), parentHelper.childrenOf(Collections.singleton(allRevs[3])));
97 // directChildren
98 errorCollector.assertEquals(Arrays.asList(allRevs[2], allRevs[3]), parentHelper.directChildren(allRevs[1]));
99 errorCollector.assertEquals(Arrays.asList(allRevs[8]), parentHelper.directChildren(allRevs[6]));
100 errorCollector.assertEquals(Collections.emptyList(), parentHelper.directChildren(allRevs[7]));
101 }
102
103 }