Mercurial > hg4j
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 } |