1 package com
.intellij
.execution
.testframework
.sm
.runner
.ui
.statistics
;
3 import com
.intellij
.execution
.runners
.ExecutionEnvironment
;
4 import com
.intellij
.execution
.testframework
.TestConsoleProperties
;
5 import com
.intellij
.execution
.testframework
.sm
.Marker
;
6 import com
.intellij
.execution
.testframework
.sm
.runner
.BaseSMTRunnerTestCase
;
7 import com
.intellij
.execution
.testframework
.sm
.runner
.SMTRunnerEventsListener
;
8 import com
.intellij
.execution
.testframework
.sm
.runner
.SMTestProxy
;
9 import com
.intellij
.execution
.testframework
.sm
.runner
.ui
.PropagateSelectionHandler
;
10 import com
.intellij
.execution
.testframework
.sm
.runner
.ui
.SMTestRunnerResultsForm
;
11 import com
.intellij
.openapi
.util
.Disposer
;
12 import com
.intellij
.openapi
.util
.Ref
;
13 import org
.jetbrains
.annotations
.NotNull
;
14 import org
.jetbrains
.annotations
.Nullable
;
17 import java
.util
.List
;
20 * @author Roman Chernyatchik
22 public class SMTRunnerStatisticsPanelTest
extends BaseSMTRunnerTestCase
{
23 private StatisticsPanel myStatisticsPanel
;
24 private SMTRunnerEventsListener myTestEventsListener
;
25 private SMTestProxy myRootSuite
;
26 private SMTestRunnerResultsForm myResultsForm
;
29 protected void setUp() throws Exception
{
32 myRootSuite
= createSuiteProxy("root");
34 final TestConsoleProperties consoleProperties
= createConsoleProperties();
35 final ExecutionEnvironment environment
= new ExecutionEnvironment();
36 myResultsForm
= new SMTestRunnerResultsForm(consoleProperties
.getConfiguration(),
39 environment
.getRunnerSettings(),
40 environment
.getConfigurationSettings());
41 myStatisticsPanel
= new StatisticsPanel(getProject(), myResultsForm
);
42 myTestEventsListener
= myStatisticsPanel
.createTestEventsListener();
46 protected void tearDown() throws Exception
{
47 Disposer
.dispose(myResultsForm
);
51 public void testGotoSuite_OnTest() {
52 // create test sturcure
53 final SMTestProxy rootSuite
= createSuiteProxy("rootSuite");
54 final SMTestProxy suite1
= createSuiteProxy("suite1", rootSuite
);
55 final SMTestProxy test1
= createTestProxy("test1", suite1
);
57 // show suite in table
58 myStatisticsPanel
.selectProxy(suite1
);
59 // selects row that corresponds to test1
60 myStatisticsPanel
.selectRow(1);
62 // Check that necessary row is selected
63 assertEquals(test1
, myStatisticsPanel
.getSelectedItem());
65 // Perform action on test
66 myStatisticsPanel
.createGotoSuiteOrParentAction().run();
68 // Check that current suite in table wasn't changed.
69 // For it let's select Total row and check selected object
70 myStatisticsPanel
.selectRow(0);
71 assertEquals(suite1
, myStatisticsPanel
.getSelectedItem());
74 public void testGotoSuite_OnSuite() {
75 // create test sturcure
76 final SMTestProxy rootSuite
= createSuiteProxy("rootSuite");
77 final SMTestProxy suite1
= createSuiteProxy("suite1", rootSuite
);
79 // show root suite in table
80 myStatisticsPanel
.selectProxy(rootSuite
);
81 // selects row that corresponds to suite1
82 myStatisticsPanel
.selectRow(1);
84 // Check that necessary row is selected
85 assertEquals(suite1
, myStatisticsPanel
.getSelectedItem());
87 // Perform action on suite
88 myStatisticsPanel
.createGotoSuiteOrParentAction().run();
90 // Check that current suite in table was changed.
91 // For it let's select Total row and check selected object
92 myStatisticsPanel
.selectRow(0);
93 assertEquals(suite1
, myStatisticsPanel
.getSelectedItem());
96 public void testGotoParentSuite_Total() {
97 // create test sturcure
98 final SMTestProxy rootSuite
= createSuiteProxy("rootSuite");
99 final SMTestProxy suite1
= createSuiteProxy("suite1", rootSuite
);
101 // show suite in table
102 myStatisticsPanel
.selectProxy(suite1
);
104 myStatisticsPanel
.selectRow(0);
106 // Check that necessary row is selected
107 assertEquals(suite1
, myStatisticsPanel
.getSelectedItem());
109 // Perform action on suite
110 myStatisticsPanel
.createGotoSuiteOrParentAction().run();
112 // Check that current suite in table was changed.
113 // For it let's select Total row and check selected object
114 myStatisticsPanel
.selectRow(0);
115 assertEquals(rootSuite
, myStatisticsPanel
.getSelectedItem());
118 public void testGotoParentSuite_TotalRoot() {
119 // create test sturcure
120 final SMTestProxy rootSuite
= createSuiteProxy("rootSuite");
121 createSuiteProxy("suite1", rootSuite
);
123 // show root suite in table
124 myStatisticsPanel
.selectProxy(rootSuite
);
126 myStatisticsPanel
.selectRow(0);
128 // Check that necessary row is selected
129 assertEquals(rootSuite
, myStatisticsPanel
.getSelectedItem());
131 // Perform action on suite
132 myStatisticsPanel
.createGotoSuiteOrParentAction().run();
134 // Check that current suite in table wasn't changed.
135 // For it let's select Total row and check selected object
136 myStatisticsPanel
.selectRow(0);
137 assertEquals(rootSuite
, myStatisticsPanel
.getSelectedItem());
140 public void testChangeSelectionListener() {
141 // create data fixture
142 final SMTestProxy rootSuite
= createSuiteProxy("rootSuite");
143 final SMTestProxy suite1
= createSuiteProxy("suite1", rootSuite
);
144 final SMTestProxy test1
= createTestProxy("test1", suite1
);
147 myStatisticsPanel
.selectProxy(test1
);
148 assertEquals(test1
, myStatisticsPanel
.getSelectedItem());
151 myStatisticsPanel
.selectProxy(suite1
);
152 assertEquals(suite1
, myStatisticsPanel
.getSelectedItem());
155 public void testChangeSelectionAction() {
156 final Marker onSelectedHappend
= new Marker();
157 final Ref
<SMTestProxy
> proxyRef
= new Ref
<SMTestProxy
>();
158 final Ref
<Boolean
> focusRequestedRef
= new Ref
<Boolean
>();
160 myStatisticsPanel
.addPropagateSelectionListener(new PropagateSelectionHandler() {
161 public void handlePropagateSelectionRequest(@Nullable final SMTestProxy selectedTestProxy
, @NotNull final Object sender
,
162 final boolean requestFocus
) {
163 onSelectedHappend
.set();
164 proxyRef
.set(selectedTestProxy
);
165 focusRequestedRef
.set(requestFocus
);
169 // create data fixture
170 final SMTestProxy rootSuite
= createSuiteProxy("rootSuite");
171 final SMTestProxy suite1
= createSuiteProxy("suite1", rootSuite
);
172 final SMTestProxy test1
= createTestProxy("test1", suite1
);
175 myStatisticsPanel
.selectProxy(suite1
);
176 myStatisticsPanel
.selectRow(1);
177 assertEquals(test1
, myStatisticsPanel
.getSelectedItem());
179 myStatisticsPanel
.showSelectedProxyInTestsTree();
180 assertTrue(onSelectedHappend
.isSet());
181 assertEquals(test1
, proxyRef
.get());
182 assertTrue(focusRequestedRef
.get());
186 onSelectedHappend
.reset();
188 focusRequestedRef
.set(null);
190 myStatisticsPanel
.selectProxy(rootSuite
);
191 myStatisticsPanel
.selectRow(1);
192 assertEquals(suite1
, myStatisticsPanel
.getSelectedItem());
194 myStatisticsPanel
.showSelectedProxyInTestsTree();
195 assertTrue(onSelectedHappend
.isSet());
196 assertEquals(suite1
, proxyRef
.get());
197 assertTrue(focusRequestedRef
.get());
201 onSelectedHappend
.reset();
203 focusRequestedRef
.set(null);
205 myStatisticsPanel
.selectProxy(rootSuite
);
206 myStatisticsPanel
.selectRow(0);
207 assertEquals(rootSuite
, myStatisticsPanel
.getSelectedItem());
209 myStatisticsPanel
.showSelectedProxyInTestsTree();
210 assertTrue(onSelectedHappend
.isSet());
211 assertEquals(rootSuite
, proxyRef
.get());
212 assertTrue(focusRequestedRef
.get());
215 public void testOnSuiteStarted_NoCurrent() {
216 myStatisticsPanel
.selectProxy(null);
218 final SMTestProxy suite1
= createSuiteProxy("suite1", myRootSuite
);
219 createTestProxy("test1", suite1
);
220 createTestProxy("test2", suite1
);
222 myTestEventsListener
.onSuiteStarted(suite1
);
223 assertEmpty(getItems());
226 public void testOnSuiteStarted_Current() {
227 final SMTestProxy suite
= createSuiteProxy("suite1", myRootSuite
);
229 myStatisticsPanel
.selectProxy(suite
);
230 assertSameElements(getItems(), suite
);
232 final SMTestProxy test1
= createTestProxy("test1", suite
);
233 final SMTestProxy test2
= createTestProxy("test2", suite
);
234 myTestEventsListener
.onSuiteStarted(suite
);
235 assertSameElements(getItems(), suite
, test1
, test2
);
238 public void testOnSuiteStarted_Child() {
239 final SMTestProxy suite
= createSuiteProxy("suite1", myRootSuite
);
241 myStatisticsPanel
.selectProxy(suite
);
242 assertSameElements(getItems(), suite
);
244 final SMTestProxy test1
= createTestProxy("test1", suite
);
245 final SMTestProxy test2
= createTestProxy("test2", suite
);
246 myTestEventsListener
.onSuiteStarted(test1
);
247 assertSameElements(getItems(), suite
, test1
, test2
);
250 public void testOnSuiteStarted_Other() {
251 final SMTestProxy suite
= createSuiteProxy("suite", myRootSuite
);
252 final SMTestProxy other_suite
= createSuiteProxy("other_suite", myRootSuite
);
254 myStatisticsPanel
.selectProxy(suite
);
255 assertSameElements(getItems(), suite
);
257 createTestProxy("test1", suite
);
258 createTestProxy("test2", suite
);
259 myTestEventsListener
.onSuiteStarted(other_suite
);
260 assertSameElements(getItems(), suite
);
263 public void testOnSuiteFinished_NoCurrent() {
264 myStatisticsPanel
.selectProxy(null);
266 final SMTestProxy suite1
= createSuiteProxy("suite1", myRootSuite
);
267 createTestProxy("test1", suite1
);
268 createTestProxy("test2", suite1
);
270 myTestEventsListener
.onSuiteFinished(suite1
);
271 assertEmpty(getItems());
274 public void testOnSuiteFinished_Current() {
275 final SMTestProxy suite
= createSuiteProxy("suite1", myRootSuite
);
277 myStatisticsPanel
.selectProxy(suite
);
278 assertSameElements(getItems(), suite
);
280 final SMTestProxy test1
= createTestProxy("test1", suite
);
281 final SMTestProxy test2
= createTestProxy("test2", suite
);
282 myTestEventsListener
.onSuiteFinished(suite
);
283 assertSameElements(getItems(), suite
, test1
, test2
);
286 public void testOnSuiteFinished_Child() {
287 final SMTestProxy suite
= createSuiteProxy("suite1", myRootSuite
);
289 myStatisticsPanel
.selectProxy(suite
);
290 assertSameElements(getItems(), suite
);
292 final SMTestProxy test1
= createTestProxy("test1", suite
);
293 final SMTestProxy test2
= createTestProxy("test2", suite
);
294 myTestEventsListener
.onSuiteFinished(test1
);
295 assertSameElements(getItems(), suite
, test1
, test2
);
298 public void testOnSuiteFinished_Other() {
299 final SMTestProxy suite
= createSuiteProxy("suite", myRootSuite
);
300 final SMTestProxy other_suite
= createSuiteProxy("other_suite", myRootSuite
);
302 myStatisticsPanel
.selectProxy(suite
);
303 assertSameElements(getItems(), suite
);
305 createTestProxy("test1", suite
);
306 createTestProxy("test2", suite
);
307 myTestEventsListener
.onSuiteFinished(other_suite
);
308 assertSameElements(getItems(), suite
);
311 public void testOnTestStarted_NoCurrent() {
312 myStatisticsPanel
.selectProxy(null);
314 final SMTestProxy suite1
= createSuiteProxy("suite1", myRootSuite
);
315 final SMTestProxy test1
= createTestProxy("test1", suite1
);
316 createTestProxy("test2", suite1
);
318 myTestEventsListener
.onTestStarted(test1
);
319 assertEmpty(getItems());
322 public void testOnTestStarted_Child() {
323 final SMTestProxy test1
= createTestProxy("test1", myRootSuite
);
325 myStatisticsPanel
.selectProxy(test1
);
326 assertSameElements(getItems(), myRootSuite
, test1
);
328 final SMTestProxy test2
= createTestProxy("test2", myRootSuite
);
329 myTestEventsListener
.onTestStarted(test1
);
330 assertSameElements(getItems(), myRootSuite
, test1
, test2
);
333 public void testOnTestStarted_Other() {
334 final SMTestProxy test1
= createTestProxy("test1", myRootSuite
);
336 final SMTestProxy suite
= createSuiteProxy("suite1", myRootSuite
);
337 final SMTestProxy other_test
= createTestProxy("other_test", suite
);
339 myStatisticsPanel
.selectProxy(test1
);
340 assertSameElements(getItems(), myRootSuite
, test1
, suite
);
342 createTestProxy("test2", myRootSuite
);
343 myTestEventsListener
.onTestStarted(other_test
);
344 assertSameElements(getItems(), myRootSuite
, test1
, suite
);
347 public void testOnTestFinished_NoCurrent() {
348 myStatisticsPanel
.selectProxy(null);
350 final SMTestProxy suite1
= createSuiteProxy("suite1", myRootSuite
);
351 final SMTestProxy test1
= createTestProxy("test1", suite1
);
352 createTestProxy("test2", suite1
);
354 myTestEventsListener
.onTestFinished(test1
);
355 assertEmpty(getItems());
359 public void testOnTestFinished_Child() {
360 final SMTestProxy test1
= createTestProxy("test1", myRootSuite
);
362 myStatisticsPanel
.selectProxy(test1
);
363 assertSameElements(getItems(), myRootSuite
, test1
);
365 final SMTestProxy test2
= createTestProxy("test2", myRootSuite
);
366 myTestEventsListener
.onTestFinished(test1
);
367 assertSameElements(getItems(), myRootSuite
, test1
, test2
);
370 public void testOnTestFinished_Other() {
371 final SMTestProxy test1
= createTestProxy("test1", myRootSuite
);
373 final SMTestProxy suite
= createSuiteProxy("suite1", myRootSuite
);
374 final SMTestProxy other_test
= createTestProxy("other_test", suite
);
376 myStatisticsPanel
.selectProxy(test1
);
377 assertSameElements(getItems(), myRootSuite
, test1
, suite
);
379 createTestProxy("test2", myRootSuite
);
380 myTestEventsListener
.onTestFinished(other_test
);
381 assertSameElements(getItems(), myRootSuite
, test1
, suite
);
384 public void testSelectionRestoring_ForTest() {
385 final SMTestProxy suite
= createSuiteProxy("suite1", myRootSuite
);
386 final SMTestProxy test1
= createTestProxy("test1", suite
);
388 myStatisticsPanel
.selectProxy(test1
);
390 final SMTestProxy test2
= createTestProxy("test2", suite
);
391 myTestEventsListener
.onTestStarted(test2
);
393 assertEquals(test1
, myStatisticsPanel
.getSelectedItem());
396 public void testSelectionRestoring_ForSuite() {
397 myStatisticsPanel
.selectProxy(myRootSuite
);
399 // another suite was added. Model should be updated
400 final SMTestProxy suite
= createSuiteProxy("suite1", myRootSuite
);
401 myTestEventsListener
.onSuiteStarted(suite
);
403 assertEquals(myRootSuite
, myStatisticsPanel
.getSelectedItem());
406 private List
<SMTestProxy
> getItems() {
407 return myStatisticsPanel
.getTableItems();