Mercurial > hg4j
comparison test/org/tmatesoft/hg/test/TestPhases.java @ 648:690e71d29bf6
Introduced RevisionSet to ease update of phase roots on push
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Tue, 25 Jun 2013 20:48:37 +0200 |
parents | 6526d8adbc0f |
children |
comparison
equal
deleted
inserted
replaced
647:c75297c17867 | 648:690e71d29bf6 |
---|---|
16 */ | 16 */ |
17 package org.tmatesoft.hg.test; | 17 package org.tmatesoft.hg.test; |
18 | 18 |
19 import static org.junit.Assert.*; | 19 import static org.junit.Assert.*; |
20 | 20 |
21 import java.util.ArrayList; | |
21 import java.util.regex.Matcher; | 22 import java.util.regex.Matcher; |
22 import java.util.regex.Pattern; | 23 import java.util.regex.Pattern; |
23 | 24 |
24 import org.junit.Rule; | 25 import org.junit.Rule; |
25 import org.junit.Test; | 26 import org.junit.Test; |
27 import org.tmatesoft.hg.core.Nodeid; | |
28 import org.tmatesoft.hg.internal.Internals; | |
26 import org.tmatesoft.hg.internal.PhasesHelper; | 29 import org.tmatesoft.hg.internal.PhasesHelper; |
30 import org.tmatesoft.hg.internal.RevisionSet; | |
27 import org.tmatesoft.hg.repo.HgChangelog; | 31 import org.tmatesoft.hg.repo.HgChangelog; |
28 import org.tmatesoft.hg.repo.HgInternals; | 32 import org.tmatesoft.hg.repo.HgInternals; |
29 import org.tmatesoft.hg.repo.HgLookup; | 33 import org.tmatesoft.hg.repo.HgLookup; |
30 import org.tmatesoft.hg.repo.HgParentChildMap; | 34 import org.tmatesoft.hg.repo.HgParentChildMap; |
31 import org.tmatesoft.hg.repo.HgPhase; | 35 import org.tmatesoft.hg.repo.HgPhase; |
64 final long start2 = System.nanoTime(); | 68 final long start2 = System.nanoTime(); |
65 PhasesHelper ph = new PhasesHelper(HgInternals.getImplementationRepo(repo), pw); | 69 PhasesHelper ph = new PhasesHelper(HgInternals.getImplementationRepo(repo), pw); |
66 initAndCheck(ph, expected); | 70 initAndCheck(ph, expected); |
67 final long end = System.nanoTime(); | 71 final long end = System.nanoTime(); |
68 System.out.printf("With ParentWalker(simulates log command for whole repo): %,d μs (pw init: %,d ns)\n", (end - start1)/1000, start2 - start1); | 72 System.out.printf("With ParentWalker(simulates log command for whole repo): %,d μs (pw init: %,d ns)\n", (end - start1)/1000, start2 - start1); |
73 } | |
74 | |
75 @Test | |
76 public void testAllSecretAndDraft() throws Exception { | |
77 HgRepository repo = Configuration.get().find("test-phases"); | |
78 Internals implRepo = HgInternals.getImplementationRepo(repo); | |
79 HgPhase[] expected = readPhases(repo); | |
80 ArrayList<Nodeid> secret = new ArrayList<Nodeid>(); | |
81 ArrayList<Nodeid> draft = new ArrayList<Nodeid>(); | |
82 ArrayList<Nodeid> pub = new ArrayList<Nodeid>(); | |
83 for (int i = 0; i < expected.length; i++) { | |
84 Nodeid n = repo.getChangelog().getRevision(i); | |
85 switch (expected[i]) { | |
86 case Secret : secret.add(n); break; | |
87 case Draft : draft.add(n); break; | |
88 case Public : pub.add(n); break; | |
89 default : throw new IllegalStateException(); | |
90 } | |
91 } | |
92 final RevisionSet rsSecret = new RevisionSet(secret); | |
93 final RevisionSet rsDraft = new RevisionSet(draft); | |
94 assertFalse("[sanity]", rsSecret.isEmpty()); | |
95 assertFalse("[sanity]", rsDraft.isEmpty()); | |
96 HgParentChildMap<HgChangelog> pw = new HgParentChildMap<HgChangelog>(repo.getChangelog()); | |
97 pw.init(); | |
98 PhasesHelper ph1 = new PhasesHelper(implRepo, null); | |
99 PhasesHelper ph2 = new PhasesHelper(implRepo, pw); | |
100 RevisionSet s1 = ph1.allSecret().symmetricDifference(rsSecret); | |
101 RevisionSet s2 = ph2.allSecret().symmetricDifference(rsSecret); | |
102 errorCollector.assertTrue("Secret,no ParentChildMap:" + s1.toString(), s1.isEmpty()); | |
103 errorCollector.assertTrue("Secret, with ParentChildMap:" + s2.toString(), s2.isEmpty()); | |
104 RevisionSet s3 = ph1.allDraft().symmetricDifference(rsDraft); | |
105 RevisionSet s4 = ph2.allDraft().symmetricDifference(rsDraft); | |
106 errorCollector.assertTrue("Draft,no ParentChildMap:" + s3.toString(), s3.isEmpty()); | |
107 errorCollector.assertTrue("Draft, with ParentChildMap:" + s4.toString(), s4.isEmpty()); | |
69 } | 108 } |
70 | 109 |
71 private HgPhase[] initAndCheck(PhasesHelper ph, HgPhase[] expected) throws HgRuntimeException { | 110 private HgPhase[] initAndCheck(PhasesHelper ph, HgPhase[] expected) throws HgRuntimeException { |
72 HgChangelog clog = ph.getRepo().getChangelog(); | 111 HgChangelog clog = ph.getRepo().getChangelog(); |
73 HgPhase[] result = new HgPhase[clog.getRevisionCount()]; | 112 HgPhase[] result = new HgPhase[clog.getRevisionCount()]; |