Lines 7-17
Link Here
|
7 |
* |
7 |
* |
8 |
* Contributors: |
8 |
* Contributors: |
9 |
* IBM Corporation - initial API and implementation |
9 |
* IBM Corporation - initial API and implementation |
10 |
* Sebastian Davids - sdavids@gmx.de bug 26754 |
10 |
* Sebastian Davids - sdavids@gmx.de bugs 26754, 36352 |
11 |
*******************************************************************************/ |
11 |
*******************************************************************************/ |
12 |
package org.eclipse.jdt.internal.junit.ui; |
12 |
package org.eclipse.jdt.internal.junit.ui; |
13 |
|
13 |
|
14 |
import java.util.HashMap; |
14 |
import java.util.HashMap; |
|
|
15 |
import java.util.Iterator; |
15 |
import java.util.Map; |
16 |
import java.util.Map; |
16 |
import java.util.Vector; |
17 |
import java.util.Vector; |
17 |
|
18 |
|
Lines 24-29
Link Here
|
24 |
import org.eclipse.swt.SWT; |
25 |
import org.eclipse.swt.SWT; |
25 |
import org.eclipse.swt.custom.CTabFolder; |
26 |
import org.eclipse.swt.custom.CTabFolder; |
26 |
import org.eclipse.swt.custom.CTabItem; |
27 |
import org.eclipse.swt.custom.CTabItem; |
|
|
28 |
import org.eclipse.swt.dnd.Clipboard; |
27 |
import org.eclipse.swt.events.DisposeEvent; |
29 |
import org.eclipse.swt.events.DisposeEvent; |
28 |
import org.eclipse.swt.events.DisposeListener; |
30 |
import org.eclipse.swt.events.DisposeListener; |
29 |
import org.eclipse.swt.events.MouseAdapter; |
31 |
import org.eclipse.swt.events.MouseAdapter; |
Lines 67-73
Link Here
|
67 |
} |
69 |
} |
68 |
} |
70 |
} |
69 |
|
71 |
|
70 |
|
72 |
class PlainTextFormatter { |
|
|
73 |
private StringBuffer fBuffer; |
74 |
private Vector fSuitInfos; |
75 |
int fExecuted; |
76 |
int fErrors; |
77 |
int fFailures; |
78 |
|
79 |
public PlainTextFormatter( |
80 |
Vector suitInfos, |
81 |
int executed, |
82 |
int errors, |
83 |
int failures) { |
84 |
|
85 |
fSuitInfos= suitInfos; |
86 |
fExecuted= executed; |
87 |
fErrors= errors; |
88 |
fFailures= failures; |
89 |
} |
90 |
|
91 |
private TestRunInfo getTestRunInfo(TreeItem item) { |
92 |
return (TestRunInfo) item.getData(); |
93 |
} |
94 |
|
95 |
protected void append(String s) { |
96 |
fBuffer.append(s); |
97 |
} |
98 |
|
99 |
protected void append(char c) { |
100 |
fBuffer.append(c); |
101 |
} |
102 |
|
103 |
protected void append(int i) { |
104 |
fBuffer.append(i); |
105 |
} |
106 |
|
107 |
private void writeSuite(TreeItem item) { |
108 |
writeSuiteHead(getTestRunInfo(item)); |
109 |
TreeItem[] testCases = item.getItems(); |
110 |
for (int i= 0, n = testCases.length; i < n; ++i) |
111 |
writeTestCase(item.getItems()[i]); |
112 |
} |
113 |
|
114 |
protected void writeSuiteHead(TestRunInfo testCase) { |
115 |
append("\n\n"); //$NON-NLS-1$ |
116 |
writeNameAndStatus(testCase); |
117 |
} |
118 |
|
119 |
private void writeSingleTestCase(Iterator iterator, TreeItem item) { |
120 |
writeTestCase(item); |
121 |
for (;iterator.hasNext();) |
122 |
writeTestCase(((SuiteInfo) iterator.next()).fTreeItem); |
123 |
} |
124 |
|
125 |
private void writeTestCase(TreeItem item) { |
126 |
writeTestCaseHead(getTestRunInfo(item)); |
127 |
TreeItem[] methods= item.getItems(); |
128 |
for (int i= 0, n= methods.length; i < n; ++i) |
129 |
writeTestMethod(getTestRunInfo(methods[i])); |
130 |
} |
131 |
|
132 |
protected void writeTestCaseHead(TestRunInfo testCase) { |
133 |
append("\n\n"); //$NON-NLS-1$ |
134 |
writeNameAndStatus(testCase); |
135 |
} |
136 |
|
137 |
protected void writeNameAndStatus(TestRunInfo info) { |
138 |
append(info.getTestMethodName()); |
139 |
append(' '); |
140 |
append(getStatus(info)); |
141 |
} |
142 |
|
143 |
protected void writeTestMethod(TestRunInfo testCase) { |
144 |
append("\n\t"); //$NON-NLS-1$ |
145 |
writeNameAndStatus(testCase); |
146 |
writeTrace(testCase); |
147 |
} |
148 |
|
149 |
protected void writeTrace(TestRunInfo testMethod) { |
150 |
String trace = testMethod.getTrace(); |
151 |
if (trace == null) |
152 |
return; |
153 |
append("\n\t\t"); //$NON-NLS-1$ |
154 |
append(trace.replaceAll("\t", "\t\t")); //$NON-NLS-1$ |
155 |
} |
156 |
|
157 |
protected void writeHead() { |
158 |
append(JUnitMessages.getString("CounterPanel.label.runs")); //$NON-NLS-1$ |
159 |
append(fExecuted); |
160 |
append(' '); |
161 |
append(JUnitMessages.getString("CounterPanel.label.errors")); //$NON-NLS-1$ |
162 |
append(fErrors); |
163 |
append(' '); |
164 |
append(JUnitMessages.getString("CounterPanel.label.failures")); //$NON-NLS-1$ |
165 |
append(fFailures); |
166 |
} |
167 |
|
168 |
private boolean isSuite(TreeItem item) { |
169 |
TreeItem[] items= item.getItems(); |
170 |
if (items.length == 0) |
171 |
return false; |
172 |
return items[0].getItemCount() > 0; |
173 |
} |
174 |
|
175 |
protected String getStatus(TestRunInfo info) { |
176 |
int status = info.getStatus(); |
177 |
if (status == ITestRunListener.STATUS_FAILURE) |
178 |
return JUnitMessages.getString("CopyHierachy.failure"); //$NON-NLS-1$ |
179 |
if (status == ITestRunListener.STATUS_ERROR) |
180 |
return JUnitMessages.getString("CopyHierachy.error"); //$NON-NLS-1$ |
181 |
if (status == ITestRunListener.STATUS_OK) |
182 |
return JUnitMessages.getString("CopyHierachy.ok"); //$NON-NLS-1$ |
183 |
return JUnitMessages.getString("CopyHierachy.unknown"); //$NON-NLS-1$ |
184 |
} |
185 |
|
186 |
public String format() { |
187 |
fBuffer= new StringBuffer(); |
188 |
writeHead(); |
189 |
Iterator it= fSuitInfos.iterator(); |
190 |
TreeItem item= ((SuiteInfo) it.next()).fTreeItem; |
191 |
if (isSuite(item)) |
192 |
writeSuite(item); |
193 |
else |
194 |
writeSingleTestCase(it, item); |
195 |
return fBuffer.toString(); |
196 |
} |
197 |
} |
198 |
|
71 |
/** |
199 |
/** |
72 |
* Vector of SuiteInfo items |
200 |
* Vector of SuiteInfo items |
73 |
*/ |
201 |
*/ |
Lines 78-83
Link Here
|
78 |
private Map fTreeItemMap= new HashMap(); |
206 |
private Map fTreeItemMap= new HashMap(); |
79 |
|
207 |
|
80 |
private TestRunnerViewPart fTestRunnerPart; |
208 |
private TestRunnerViewPart fTestRunnerPart; |
|
|
209 |
private final Clipboard fClipboard; |
81 |
|
210 |
|
82 |
private final Image fOkIcon= TestRunnerViewPart.createImage("obj16/testok.gif"); //$NON-NLS-1$ |
211 |
private final Image fOkIcon= TestRunnerViewPart.createImage("obj16/testok.gif"); //$NON-NLS-1$ |
83 |
private final Image fErrorIcon= TestRunnerViewPart.createImage("obj16/testerr.gif"); //$NON-NLS-1$ |
212 |
private final Image fErrorIcon= TestRunnerViewPart.createImage("obj16/testerr.gif"); //$NON-NLS-1$ |
Lines 99-106
Link Here
|
99 |
expandAll(); |
228 |
expandAll(); |
100 |
} |
229 |
} |
101 |
} |
230 |
} |
102 |
public HierarchyRunView(CTabFolder tabFolder, TestRunnerViewPart runner) { |
231 |
public HierarchyRunView(CTabFolder tabFolder, Clipboard clipboard, TestRunnerViewPart runner) { |
103 |
fTestRunnerPart= runner; |
232 |
fTestRunnerPart= runner; |
|
|
233 |
fClipboard= clipboard; |
104 |
|
234 |
|
105 |
CTabItem hierarchyTab= new CTabItem(tabFolder, SWT.NONE); |
235 |
CTabItem hierarchyTab= new CTabItem(tabFolder, SWT.NONE); |
106 |
hierarchyTab.setText(getName()); |
236 |
hierarchyTab.setText(getName()); |
Lines 353-372
Link Here
|
353 |
} |
483 |
} |
354 |
|
484 |
|
355 |
public void menuAboutToShow(IMenuManager manager) { |
485 |
public void menuAboutToShow(IMenuManager manager) { |
356 |
if (fTree.getSelectionCount() > 0) { |
486 |
boolean selection= fTree.getSelectionCount() > 0; |
|
|
487 |
if (selection) { |
357 |
TreeItem treeItem= fTree.getSelection()[0]; |
488 |
TreeItem treeItem= fTree.getSelection()[0]; |
358 |
TestRunInfo testInfo= (TestRunInfo) treeItem.getData(); |
489 |
TestRunInfo testInfo= (TestRunInfo) treeItem.getData(); |
359 |
String testLabel= testInfo.getTestName(); |
490 |
String testLabel= testInfo.getTestName(); |
360 |
if (isSuiteSelected()) { |
491 |
if (isSuiteSelected()) |
361 |
manager.add(new OpenTestAction(fTestRunnerPart, testLabel)); |
492 |
manager.add(new OpenTestAction(fTestRunnerPart, testLabel)); |
362 |
} else { |
493 |
else { |
363 |
manager.add(new OpenTestAction(fTestRunnerPart, getClassName(), getTestMethod())); |
494 |
manager.add( |
364 |
manager.add(new RerunAction(fTestRunnerPart, getSelectedTestId(), getClassName(), getTestMethod())); |
495 |
new OpenTestAction( |
|
|
496 |
fTestRunnerPart, |
497 |
getClassName(), |
498 |
getTestMethod())); |
499 |
manager.add( |
500 |
new RerunAction( |
501 |
fTestRunnerPart, |
502 |
getSelectedTestId(), |
503 |
getClassName(), |
504 |
getTestMethod())); |
365 |
} |
505 |
} |
|
|
506 |
} |
507 |
if (fTree.getItemCount() > 0) { |
366 |
manager.add(new Separator()); |
508 |
manager.add(new Separator()); |
367 |
manager.add(new ExpandAllAction()); |
509 |
manager.add(new CopyHierachyAction(fTestRunnerPart, this, fClipboard)); |
368 |
} |
510 |
} |
369 |
} |
511 |
if (selection) |
|
|
512 |
manager.add(new ExpandAllAction()); |
513 |
} |
370 |
|
514 |
|
371 |
public void newTreeEntry(String treeEntry) { |
515 |
public void newTreeEntry(String treeEntry) { |
372 |
// format: testId","testName","isSuite","testcount |
516 |
// format: testId","testName","isSuite","testcount |
Lines 595-598
Link Here
|
595 |
expandAll(items[i]); |
739 |
expandAll(items[i]); |
596 |
} |
740 |
} |
597 |
} |
741 |
} |
|
|
742 |
|
743 |
String getHierachyAsString() { |
744 |
PlainTextFormatter formatter= |
745 |
new PlainTextFormatter( |
746 |
fSuiteInfos, |
747 |
fTestRunnerPart.fExecutedTests, |
748 |
fTestRunnerPart.fErrorCount, |
749 |
fTestRunnerPart.fFailureCount); |
750 |
return formatter.format(); |
751 |
} |
598 |
} |
752 |
} |