1. Tests Runner: autoscroll to sources fixed
[fedora-idea.git] / smRunner / testSrc / com / intellij / execution / testframework / sm / runner / ui / statistics / SMTRunnerStatisticsPanelTest.java
blob7e3a5d88decd809354ade19a5232925e0d356423
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;
16 /**
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;
25 @Override
26 protected void setUp() throws Exception {
27 super.setUp();
29 myRootSuite = createSuiteProxy("root");
31 myResultsForm = (SMTestRunnerResultsForm)createResultsViewer(createConsoleProperties());
32 myStatisticsPanel = new StatisticsPanel(getProject(), myResultsForm);
33 myTestEventsListener = myStatisticsPanel.createTestEventsListener();
36 @Override
37 protected void tearDown() throws Exception {
38 Disposer.dispose(myResultsForm);
39 super.tearDown();
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);
94 // selects Total row
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);
116 // selects Total row
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);
137 //test
138 myStatisticsPanel.selectProxy(test1);
139 assertEquals(test1, myStatisticsPanel.getSelectedItem());
141 //suite
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);
165 //on test
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());
175 //on suite
176 //reset markers
177 onSelectedHappend.reset();
178 proxyRef.set(null);
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());
190 //on Total
191 //reset markers
192 onSelectedHappend.reset();
193 proxyRef.set(null);
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();