1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 package org.eclipse.jgit.revplot;
44
45 import static org.junit.Assert.assertEquals;
46
47 import java.io.IOException;
48 import java.util.LinkedList;
49 import java.util.List;
50
51 import org.eclipse.jgit.api.Git;
52 import org.eclipse.jgit.api.MergeCommand.FastForwardMode;
53 import org.eclipse.jgit.api.MergeResult;
54 import org.eclipse.jgit.api.errors.GitAPIException;
55 import org.eclipse.jgit.junit.RepositoryTestCase;
56 import org.eclipse.jgit.lib.ObjectId;
57 import org.eclipse.jgit.lib.Ref;
58 import org.eclipse.jgit.lib.Repository;
59 import org.junit.Before;
60 import org.junit.Test;
61
62 public class AbstractPlotRendererTest extends RepositoryTestCase {
63
64 private Git git;
65 private TestPlotRenderer plotRenderer;
66
67 @Override
68 @Before
69 public void setUp() throws Exception {
70 super.setUp();
71 git = new Git(db);
72 plotRenderer = new TestPlotRenderer();
73 }
74
75 @Test
76 public void testDrawTextAlignment() throws Exception {
77 git.commit().setMessage("initial commit").call();
78 git.branchCreate().setName("topic").call();
79 git.checkout().setName("topic").call();
80 git.commit().setMessage("commit 1 on topic").call();
81 git.commit().setMessage("commit 2 on topic").call();
82 git.checkout().setName("master").call();
83 git.commit().setMessage("commit on master").call();
84 MergeResult mergeCall = merge(db.resolve("topic"));
85 ObjectId start = mergeCall.getNewHead();
86 PlotCommitList<PlotLane> commitList = createCommitList(start);
87
88 for (int i = 0; i < commitList.size(); i++)
89 plotRenderer.paintCommit(commitList.get(i), 30);
90
91 List<Integer> indentations = plotRenderer.indentations;
92 assertEquals(indentations.get(2), indentations.get(3));
93 }
94
95 private PlotCommitList<PlotLane> createCommitList(ObjectId start)
96 throws IOException {
97 TestPlotWalk walk = new TestPlotWalk(db);
98 walk.markStart(walk.parseCommit(start));
99 PlotCommitList<PlotLane> commitList = new PlotCommitList<PlotLane>();
100 commitList.source(walk);
101 commitList.fillTo(1000);
102 return commitList;
103 }
104
105 private MergeResult merge(ObjectId includeId) throws GitAPIException {
106 return git.merge().setFastForward(FastForwardMode.NO_FF)
107 .include(includeId).call();
108 }
109
110 private static class TestPlotWalk extends PlotWalk {
111 public TestPlotWalk(Repository repo) {
112 super(repo);
113 }
114 }
115
116 private static class TestPlotRenderer extends
117 AbstractPlotRenderer<PlotLane, Object> {
118
119 List<Integer> indentations = new LinkedList<Integer>();
120
121 @Override
122 protected int drawLabel(int x, int y, Ref ref) {
123 return 0;
124 }
125
126 @Override
127 protected Object laneColor(PlotLane myLane) {
128 return null;
129 }
130
131 @Override
132 protected void drawLine(Object color, int x1, int y1, int x2, int y2,
133 int width) {
134
135 }
136
137 @Override
138 protected void drawCommitDot(int x, int y, int w, int h) {
139
140 }
141
142 @Override
143 protected void drawBoundaryDot(int x, int y, int w, int h) {
144
145 }
146
147 @Override
148 protected void drawText(String msg, int x, int y) {
149 indentations.add(Integer.valueOf(x));
150 }
151 }
152
153 }