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 |
protected void writeSuite(TestRunInfo testCase) { |
108 |
append("\n\n"); //$NON-NLS-1$ |
109 |
writeNameAndStatus(testCase); |
110 |
} |
111 |
|
112 |
protected void writeTestCase(TestRunInfo testCase) { |
113 |
append("\n\n"); //$NON-NLS-1$ |
114 |
writeNameAndStatus(testCase); |
115 |
} |
116 |
|
117 |
protected void writeNameAndStatus(TestRunInfo info) { |
118 |
append(info.getTestMethodName()); |
119 |
append(' '); |
120 |
append(getStatus(info)); |
121 |
} |
122 |
|
123 |
protected void writeTestMethod(TestRunInfo testCase) { |
124 |
append("\n\t"); //$NON-NLS-1$ |
125 |
writeNameAndStatus(testCase); |
126 |
writeTrace(testCase); |
127 |
} |
128 |
|
129 |
protected void writeTrace(TestRunInfo testMethod) { |
130 |
String trace = testMethod.getTrace(); |
131 |
if (trace == null) |
132 |
return; |
133 |
append("\n\t\t"); //$NON-NLS-1$ |
134 |
append(trace.replaceAll("\t", "\t\t")); //$NON-NLS-1$ |
135 |
} |
136 |
|
137 |
protected void writeHead() { |
138 |
append(JUnitMessages.getString("CounterPanel.label.runs")); //$NON-NLS-1$ |
139 |
append(fExecuted); |
140 |
append(' '); |
141 |
append(JUnitMessages.getString("CounterPanel.label.errors")); //$NON-NLS-1$ |
142 |
append(fErrors); |
143 |
append(' '); |
144 |
append(JUnitMessages.getString("CounterPanel.label.failures")); //$NON-NLS-1$ |
145 |
append(fFailures); |
146 |
} |
147 |
|
148 |
private boolean isSuite(TreeItem item) { |
149 |
TreeItem[] items= item.getItems(); |
150 |
if (items.length == 0) |
151 |
return false; |
152 |
return items[0].getItemCount() > 0; |
153 |
} |
154 |
|
155 |
protected String getStatus(TestRunInfo info) { |
156 |
int status = info.getStatus(); |
157 |
if (status == ITestRunListener.STATUS_FAILURE) |
158 |
return JUnitMessages.getString("CopyHierachy.failure"); //$NON-NLS-1$ |
159 |
if (status == ITestRunListener.STATUS_ERROR) |
160 |
return JUnitMessages.getString("CopyHierachy.error"); //$NON-NLS-1$ |
161 |
if (status == ITestRunListener.STATUS_OK) |
162 |
return JUnitMessages.getString("CopyHierachy.ok"); //$NON-NLS-1$ |
163 |
return JUnitMessages.getString("CopyHierachy.unknown"); //$NON-NLS-1$ |
164 |
} |
165 |
|
166 |
public String format() { |
167 |
fBuffer= new StringBuffer(); |
168 |
writeHead(); |
169 |
for (Iterator it= fSuitInfos.iterator(); it.hasNext();) { |
170 |
TreeItem item= ((SuiteInfo) it.next()).fTreeItem; |
171 |
if (isSuite(item)) { |
172 |
writeSuite(getTestRunInfo(item)); |
173 |
item= item.getItems()[0]; |
174 |
} |
175 |
writeTestCase(getTestRunInfo(item)); |
176 |
TreeItem[] methods= item.getItems(); |
177 |
for (int i= 0, n= methods.length; i < n; ++i) |
178 |
writeTestMethod(getTestRunInfo(methods[i])); |
179 |
} |
180 |
return fBuffer.toString(); |
181 |
} |
182 |
} |
183 |
|
71 |
/** |
184 |
/** |
72 |
* Vector of SuiteInfo items |
185 |
* Vector of SuiteInfo items |
73 |
*/ |
186 |
*/ |
Lines 78-83
Link Here
|
78 |
private Map fTreeItemMap= new HashMap(); |
191 |
private Map fTreeItemMap= new HashMap(); |
79 |
|
192 |
|
80 |
private TestRunnerViewPart fTestRunnerPart; |
193 |
private TestRunnerViewPart fTestRunnerPart; |
|
|
194 |
private final Clipboard fClipboard; |
81 |
|
195 |
|
82 |
private final Image fOkIcon= TestRunnerViewPart.createImage("obj16/testok.gif"); //$NON-NLS-1$ |
196 |
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$ |
197 |
private final Image fErrorIcon= TestRunnerViewPart.createImage("obj16/testerr.gif"); //$NON-NLS-1$ |
Lines 99-106
Link Here
|
99 |
expandAll(); |
213 |
expandAll(); |
100 |
} |
214 |
} |
101 |
} |
215 |
} |
102 |
public HierarchyRunView(CTabFolder tabFolder, TestRunnerViewPart runner) { |
216 |
public HierarchyRunView(CTabFolder tabFolder, Clipboard clipboard, TestRunnerViewPart runner) { |
103 |
fTestRunnerPart= runner; |
217 |
fTestRunnerPart= runner; |
|
|
218 |
fClipboard= clipboard; |
104 |
|
219 |
|
105 |
CTabItem hierarchyTab= new CTabItem(tabFolder, SWT.NONE); |
220 |
CTabItem hierarchyTab= new CTabItem(tabFolder, SWT.NONE); |
106 |
hierarchyTab.setText(getName()); |
221 |
hierarchyTab.setText(getName()); |
Lines 353-372
Link Here
|
353 |
} |
468 |
} |
354 |
|
469 |
|
355 |
public void menuAboutToShow(IMenuManager manager) { |
470 |
public void menuAboutToShow(IMenuManager manager) { |
356 |
if (fTree.getSelectionCount() > 0) { |
471 |
boolean selection= fTree.getSelectionCount() > 0; |
|
|
472 |
if (selection) { |
357 |
TreeItem treeItem= fTree.getSelection()[0]; |
473 |
TreeItem treeItem= fTree.getSelection()[0]; |
358 |
TestRunInfo testInfo= (TestRunInfo) treeItem.getData(); |
474 |
TestRunInfo testInfo= (TestRunInfo) treeItem.getData(); |
359 |
String testLabel= testInfo.getTestName(); |
475 |
String testLabel= testInfo.getTestName(); |
360 |
if (isSuiteSelected()) { |
476 |
if (isSuiteSelected()) |
361 |
manager.add(new OpenTestAction(fTestRunnerPart, testLabel)); |
477 |
manager.add(new OpenTestAction(fTestRunnerPart, testLabel)); |
362 |
} else { |
478 |
else { |
363 |
manager.add(new OpenTestAction(fTestRunnerPart, getClassName(), getTestMethod())); |
479 |
manager.add( |
364 |
manager.add(new RerunAction(fTestRunnerPart, getSelectedTestId(), getClassName(), getTestMethod())); |
480 |
new OpenTestAction( |
|
|
481 |
fTestRunnerPart, |
482 |
getClassName(), |
483 |
getTestMethod())); |
484 |
manager.add( |
485 |
new RerunAction( |
486 |
fTestRunnerPart, |
487 |
getSelectedTestId(), |
488 |
getClassName(), |
489 |
getTestMethod())); |
365 |
} |
490 |
} |
|
|
491 |
} |
492 |
if (fTree.getItemCount() > 0) { |
366 |
manager.add(new Separator()); |
493 |
manager.add(new Separator()); |
367 |
manager.add(new ExpandAllAction()); |
494 |
manager.add(new CopyHierachyAction(fTestRunnerPart, this, fClipboard)); |
368 |
} |
495 |
} |
369 |
} |
496 |
if (selection) |
|
|
497 |
manager.add(new ExpandAllAction()); |
498 |
} |
370 |
|
499 |
|
371 |
public void newTreeEntry(String treeEntry) { |
500 |
public void newTreeEntry(String treeEntry) { |
372 |
// format: testId","testName","isSuite","testcount |
501 |
// format: testId","testName","isSuite","testcount |
Lines 595-598
Link Here
|
595 |
expandAll(items[i]); |
724 |
expandAll(items[i]); |
596 |
} |
725 |
} |
597 |
} |
726 |
} |
|
|
727 |
|
728 |
String getHierachyAsString() { |
729 |
PlainTextFormatter formatter= |
730 |
new PlainTextFormatter( |
731 |
fSuiteInfos, |
732 |
fTestRunnerPart.fExecutedTests, |
733 |
fTestRunnerPart.fErrorCount, |
734 |
fTestRunnerPart.fFailureCount); |
735 |
return formatter.format(); |
736 |
} |
598 |
} |
737 |
} |