1 package com
.intellij
.execution
.testframework
.sm
.runner
.ui
.statistics
;
3 import com
.intellij
.execution
.testframework
.sm
.runner
.BaseSMTRunnerTestCase
;
4 import com
.intellij
.execution
.testframework
.sm
.runner
.SMTRunnerEventsListener
;
5 import com
.intellij
.execution
.testframework
.sm
.runner
.SMTestProxy
;
6 import com
.intellij
.execution
.testframework
.sm
.runner
.ui
.SMTestRunnerResultsForm
;
7 import com
.intellij
.execution
.testframework
.sm
.runner
.ui
.PropagateSelectionHandler
;
8 import com
.intellij
.openapi
.util
.Disposer
;
9 import com
.intellij
.openapi
.util
.Ref
;
10 import org
.jetbrains
.annotations
.NotNull
;
11 import org
.jetbrains
.annotations
.Nullable
;
12 import org
.jetbrains
.plugins
.ruby
.Marker
;
14 import java
.util
.List
;
17 * @author Roman Chernyatchik
19 public class SMTRunnerStatisticsPanelTest
extends BaseSMTRunnerTestCase
{
20 private StatisticsPanel myStatisticsPanel
;
21 private SMTRunnerEventsListener myTestEventsListener
;
22 private SMTestProxy myRootSuite
;
23 private SMTestRunnerResultsForm myResultsForm
;
26 protected void setUp() throws Exception
{
29 myRootSuite
= createSuiteProxy("root");
31 myResultsForm
= (SMTestRunnerResultsForm
)createResultsViewer(createConsoleProperties());
32 myStatisticsPanel
= new StatisticsPanel(getProject(), myResultsForm
);
33 myTestEventsListener
= myStatisticsPanel
.createTestEventsListener();
37 protected void tearDown() throws Exception
{
38 Disposer
.dispose(myResultsForm
);
42 public void testGotoSuite_OnTest() {
43 // create test sturcure
44 final SMTestProxy rootSuite
= createSuiteProxy("rootSuite");
45 final SMTestProxy suite1
= createSuiteProxy("suite1", rootSuite
);
46 final SMTestProxy test1
= createTestProxy("test1", suite1
);
48 // show suite in table
49 myStatisticsPanel
.selectProxy(suite1
);
50 // selects row that corresponds to test1
51 myStatisticsPanel
.selectRow(1);
53 // Check that necessary row is selected
54 assertEquals(test1
, myStatisticsPanel
.getSelectedItem());
56 // Perform action on test
57 myStatisticsPanel
.createGotoSuiteOrParentAction().run();
59 // Check that current suite in table wasn't changed.
60 // For it let's select Total row and check selected object
61 myStatisticsPanel
.selectRow(0);
62 assertEquals(suite1
, myStatisticsPanel
.getSelectedItem());
65 public void testGotoSuite_OnSuite() {
66 // create test sturcure
67 final SMTestProxy rootSuite
= createSuiteProxy("rootSuite");
68 final SMTestProxy suite1
= createSuiteProxy("suite1", rootSuite
);
70 // show root suite in table
71 myStatisticsPanel
.selectProxy(rootSuite
);
72 // selects row that corresponds to suite1
73 myStatisticsPanel
.selectRow(1);
75 // Check that necessary row is selected
76 assertEquals(suite1
, myStatisticsPanel
.getSelectedItem());
78 // Perform action on suite
79 myStatisticsPanel
.createGotoSuiteOrParentAction().run();
81 // Check that current suite in table was changed.
82 // For it let's select Total row and check selected object
83 myStatisticsPanel
.selectRow(0);
84 assertEquals(suite1
, myStatisticsPanel
.getSelectedItem());
87 public void testGotoParentSuite_Total() {
88 // create test sturcure
89 final SMTestProxy rootSuite
= createSuiteProxy("rootSuite");
90 final SMTestProxy suite1
= createSuiteProxy("suite1", rootSuite
);
92 // show suite in table
93 myStatisticsPanel
.selectProxy(suite1
);
95 myStatisticsPanel
.selectRow(0);
97 // Check that necessary row is selected
98 assertEquals(suite1
, myStatisticsPanel
.getSelectedItem());
100 // Perform action on suite
101 myStatisticsPanel
.createGotoSuiteOrParentAction().run();
103 // Check that current suite in table was changed.
104 // For it let's select Total row and check selected object
105 myStatisticsPanel
.selectRow(0);
106 assertEquals(rootSuite
, myStatisticsPanel
.getSelectedItem());
109 public void testGotoParentSuite_TotalRoot() {
110 // create test sturcure
111 final SMTestProxy rootSuite
= createSuiteProxy("rootSuite");
112 createSuiteProxy("suite1", rootSuite
);
114 // show root suite in table
115 myStatisticsPanel
.selectProxy(rootSuite
);
117 myStatisticsPanel
.selectRow(0);
119 // Check that necessary row is selected
120 assertEquals(rootSuite
, myStatisticsPanel
.getSelectedItem());
122 // Perform action on suite
123 myStatisticsPanel
.createGotoSuiteOrParentAction().run();
125 // Check that current suite in table wasn't changed.
126 // For it let's select Total row and check selected object
127 myStatisticsPanel
.selectRow(0);
128 assertEquals(rootSuite
, myStatisticsPanel
.getSelectedItem());
131 public void testChangeSelectionListener() {
132 // create data fixture
133 final SMTestProxy rootSuite
= createSuiteProxy("rootSuite");
134 final SMTestProxy suite1
= createSuiteProxy("suite1", rootSuite
);
135 final SMTestProxy test1
= createTestProxy("test1", suite1
);
138 myStatisticsPanel
.selectProxy(test1
);
139 assertEquals(test1
, myStatisticsPanel
.getSelectedItem());
142 myStatisticsPanel
.selectProxy(suite1
);
143 assertEquals(suite1
, myStatisticsPanel
.getSelectedItem());
146 public void testChangeSelectionAction() {
147 final Marker onSelectedHappend
= new Marker();
148 final Ref
<SMTestProxy
> proxyRef
= new Ref
<SMTestProxy
>();
149 final Ref
<Boolean
> focusRequestedRef
= new Ref
<Boolean
>();
151 myStatisticsPanel
.addPropagateSelectionListener(new PropagateSelectionHandler() {
152 public void handlePropagateSelectionRequest(@Nullable final SMTestProxy selectedTestProxy
, @NotNull final Object sender
,
153 final boolean requestFocus
) {
154 onSelectedHappend
.set();
155 proxyRef
.set(selectedTestProxy
);
156 focusRequestedRef
.set(requestFocus
);
160 // create data fixture
161 final SMTestProxy rootSuite
= createSuiteProxy("rootSuite");
162 final SMTestProxy suite1
= createSuiteProxy("suite1", rootSuite
);
163 final SMTestProxy test1
= createTestProxy("test1", suite1
);
166 myStatisticsPanel
.selectProxy(suite1
);
167 myStatisticsPanel
.selectRow(1);
168 assertEquals(test1
, myStatisticsPanel
.getSelectedItem());
170 myStatisticsPanel
.showSelectedProxyInTestsTree();
171 assertTrue(onSelectedHappend
.isSet());
172 assertEquals(test1
, proxyRef
.get());
173 assertTrue(focusRequestedRef
.get());
177 onSelectedHappend
.reset();
179 focusRequestedRef
.set(null);
181 myStatisticsPanel
.selectProxy(rootSuite
);
182 myStatisticsPanel
.selectRow(1);
183 assertEquals(suite1
, myStatisticsPanel
.getSelectedItem());
185 myStatisticsPanel
.showSelectedProxyInTestsTree();
186 assertTrue(onSelectedHappend
.isSet());
187 assertEquals(suite1
, proxyRef
.get());
188 assertTrue(focusRequestedRef
.get());
192 onSelectedHappend
.reset();
194 focusRequestedRef
.set(null);
196 myStatisticsPanel
.selectProxy(rootSuite
);
197 myStatisticsPanel
.selectRow(0);
198 assertEquals(rootSuite
, myStatisticsPanel
.getSelectedItem());
200 myStatisticsPanel
.showSelectedProxyInTestsTree();
201 assertTrue(onSelectedHappend
.isSet());
202 assertEquals(rootSuite
, proxyRef
.get());
203 assertTrue(focusRequestedRef
.get());
206 public void testOnSuiteStarted_NoCurrent() {
207 myStatisticsPanel
.selectProxy(null);
209 final SMTestProxy suite1
= createSuiteProxy("suite1", myRootSuite
);
210 createTestProxy("test1", suite1
);
211 createTestProxy("test2", suite1
);
213 myTestEventsListener
.onSuiteStarted(suite1
);
214 assertEmpty(getItems());
217 public void testOnSuiteStarted_Current() {
218 final SMTestProxy suite
= createSuiteProxy("suite1", myRootSuite
);
220 myStatisticsPanel
.selectProxy(suite
);
221 assertSameElements(getItems(), suite
);
223 final SMTestProxy test1
= createTestProxy("test1", suite
);
224 final SMTestProxy test2
= createTestProxy("test2", suite
);
225 myTestEventsListener
.onSuiteStarted(suite
);
226 assertSameElements(getItems(), suite
, test1
, test2
);
229 public void testOnSuiteStarted_Child() {
230 final SMTestProxy suite
= createSuiteProxy("suite1", myRootSuite
);
232 myStatisticsPanel
.selectProxy(suite
);
233 assertSameElements(getItems(), suite
);
235 final SMTestProxy test1
= createTestProxy("test1", suite
);
236 final SMTestProxy test2
= createTestProxy("test2", suite
);
237 myTestEventsListener
.onSuiteStarted(test1
);
238 assertSameElements(getItems(), suite
, test1
, test2
);
241 public void testOnSuiteStarted_Other() {
242 final SMTestProxy suite
= createSuiteProxy("suite", myRootSuite
);
243 final SMTestProxy other_suite
= createSuiteProxy("other_suite", myRootSuite
);
245 myStatisticsPanel
.selectProxy(suite
);
246 assertSameElements(getItems(), suite
);
248 createTestProxy("test1", suite
);
249 createTestProxy("test2", suite
);
250 myTestEventsListener
.onSuiteStarted(other_suite
);
251 assertSameElements(getItems(), suite
);
254 public void testOnSuiteFinished_NoCurrent() {
255 myStatisticsPanel
.selectProxy(null);
257 final SMTestProxy suite1
= createSuiteProxy("suite1", myRootSuite
);
258 createTestProxy("test1", suite1
);
259 createTestProxy("test2", suite1
);
261 myTestEventsListener
.onSuiteFinished(suite1
);
262 assertEmpty(getItems());
265 public void testOnSuiteFinished_Current() {
266 final SMTestProxy suite
= createSuiteProxy("suite1", myRootSuite
);
268 myStatisticsPanel
.selectProxy(suite
);
269 assertSameElements(getItems(), suite
);
271 final SMTestProxy test1
= createTestProxy("test1", suite
);
272 final SMTestProxy test2
= createTestProxy("test2", suite
);
273 myTestEventsListener
.onSuiteFinished(suite
);
274 assertSameElements(getItems(), suite
, test1
, test2
);
277 public void testOnSuiteFinished_Child() {
278 final SMTestProxy suite
= createSuiteProxy("suite1", myRootSuite
);
280 myStatisticsPanel
.selectProxy(suite
);
281 assertSameElements(getItems(), suite
);
283 final SMTestProxy test1
= createTestProxy("test1", suite
);
284 final SMTestProxy test2
= createTestProxy("test2", suite
);
285 myTestEventsListener
.onSuiteFinished(test1
);
286 assertSameElements(getItems(), suite
, test1
, test2
);
289 public void testOnSuiteFinished_Other() {
290 final SMTestProxy suite
= createSuiteProxy("suite", myRootSuite
);
291 final SMTestProxy other_suite
= createSuiteProxy("other_suite", myRootSuite
);
293 myStatisticsPanel
.selectProxy(suite
);
294 assertSameElements(getItems(), suite
);
296 createTestProxy("test1", suite
);
297 createTestProxy("test2", suite
);
298 myTestEventsListener
.onSuiteFinished(other_suite
);
299 assertSameElements(getItems(), suite
);
302 public void testOnTestStarted_NoCurrent() {
303 myStatisticsPanel
.selectProxy(null);
305 final SMTestProxy suite1
= createSuiteProxy("suite1", myRootSuite
);
306 final SMTestProxy test1
= createTestProxy("test1", suite1
);
307 createTestProxy("test2", suite1
);
309 myTestEventsListener
.onTestStarted(test1
);
310 assertEmpty(getItems());
313 public void testOnTestStarted_Child() {
314 final SMTestProxy test1
= createTestProxy("test1", myRootSuite
);
316 myStatisticsPanel
.selectProxy(test1
);
317 assertSameElements(getItems(), myRootSuite
, test1
);
319 final SMTestProxy test2
= createTestProxy("test2", myRootSuite
);
320 myTestEventsListener
.onTestStarted(test1
);
321 assertSameElements(getItems(), myRootSuite
, test1
, test2
);
324 public void testOnTestStarted_Other() {
325 final SMTestProxy test1
= createTestProxy("test1", myRootSuite
);
327 final SMTestProxy suite
= createSuiteProxy("suite1", myRootSuite
);
328 final SMTestProxy other_test
= createTestProxy("other_test", suite
);
330 myStatisticsPanel
.selectProxy(test1
);
331 assertSameElements(getItems(), myRootSuite
, test1
, suite
);
333 createTestProxy("test2", myRootSuite
);
334 myTestEventsListener
.onTestStarted(other_test
);
335 assertSameElements(getItems(), myRootSuite
, test1
, suite
);
338 public void testOnTestFinished_NoCurrent() {
339 myStatisticsPanel
.selectProxy(null);
341 final SMTestProxy suite1
= createSuiteProxy("suite1", myRootSuite
);
342 final SMTestProxy test1
= createTestProxy("test1", suite1
);
343 createTestProxy("test2", suite1
);
345 myTestEventsListener
.onTestFinished(test1
);
346 assertEmpty(getItems());
350 public void testOnTestFinished_Child() {
351 final SMTestProxy test1
= createTestProxy("test1", myRootSuite
);
353 myStatisticsPanel
.selectProxy(test1
);
354 assertSameElements(getItems(), myRootSuite
, test1
);
356 final SMTestProxy test2
= createTestProxy("test2", myRootSuite
);
357 myTestEventsListener
.onTestFinished(test1
);
358 assertSameElements(getItems(), myRootSuite
, test1
, test2
);
361 public void testOnTestFinished_Other() {
362 final SMTestProxy test1
= createTestProxy("test1", myRootSuite
);
364 final SMTestProxy suite
= createSuiteProxy("suite1", myRootSuite
);
365 final SMTestProxy other_test
= createTestProxy("other_test", suite
);
367 myStatisticsPanel
.selectProxy(test1
);
368 assertSameElements(getItems(), myRootSuite
, test1
, suite
);
370 createTestProxy("test2", myRootSuite
);
371 myTestEventsListener
.onTestFinished(other_test
);
372 assertSameElements(getItems(), myRootSuite
, test1
, suite
);
375 public void testSelectionRestoring_ForTest() {
376 final SMTestProxy suite
= createSuiteProxy("suite1", myRootSuite
);
377 final SMTestProxy test1
= createTestProxy("test1", suite
);
379 myStatisticsPanel
.selectProxy(test1
);
381 final SMTestProxy test2
= createTestProxy("test2", suite
);
382 myTestEventsListener
.onTestStarted(test2
);
384 assertEquals(test1
, myStatisticsPanel
.getSelectedItem());
387 public void testSelectionRestoring_ForSuite() {
388 myStatisticsPanel
.selectProxy(myRootSuite
);
390 // another suite was added. Model should be updated
391 final SMTestProxy suite
= createSuiteProxy("suite1", myRootSuite
);
392 myTestEventsListener
.onSuiteStarted(suite
);
394 assertEquals(myRootSuite
, myStatisticsPanel
.getSelectedItem());
397 private List
<SMTestProxy
> getItems() {
398 return myStatisticsPanel
.getTableItems();