smrunner: dependency on ruby module removed
[fedora-idea.git] / smRunner / testSrc / com / intellij / execution / testframework / sm / runner / ui / statistics / SMTRunnerStatisticsPanelTest.java
blob1f2f1731a945d91f6a4931308dd9b6c76b9bc79b
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;
16 import javax.swing.*;
17 import java.util.List;
19 /**
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;
28 @Override
29 protected void setUp() throws Exception {
30 super.setUp();
32 myRootSuite = createSuiteProxy("root");
34 final TestConsoleProperties consoleProperties = createConsoleProperties();
35 final ExecutionEnvironment environment = new ExecutionEnvironment();
36 myResultsForm = new SMTestRunnerResultsForm(consoleProperties.getConfiguration(),
37 new JLabel(),
38 consoleProperties,
39 environment.getRunnerSettings(),
40 environment.getConfigurationSettings());
41 myStatisticsPanel = new StatisticsPanel(getProject(), myResultsForm);
42 myTestEventsListener = myStatisticsPanel.createTestEventsListener();
45 @Override
46 protected void tearDown() throws Exception {
47 Disposer.dispose(myResultsForm);
48 super.tearDown();
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);
103 // selects Total row
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);
125 // selects Total row
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);
146 //test
147 myStatisticsPanel.selectProxy(test1);
148 assertEquals(test1, myStatisticsPanel.getSelectedItem());
150 //suite
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);
174 //on test
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());
184 //on suite
185 //reset markers
186 onSelectedHappend.reset();
187 proxyRef.set(null);
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());
199 //on Total
200 //reset markers
201 onSelectedHappend.reset();
202 proxyRef.set(null);
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();