Test runner based on service messages was extracted
[fedora-idea.git] / plugins / ruby / testSrc / org / jetbrains / plugins / ruby / testing / sm / runner / GeneralToRTestUnitEventsConvertorTest.java
blob4a6391075161263df88a41df92a2c115a00b4f3b
1 package org.jetbrains.plugins.ruby.testing.sm.runner;
3 import com.intellij.execution.testframework.TestConsoleProperties;
4 import com.intellij.openapi.util.Disposer;
5 import org.jetbrains.plugins.ruby.Marker;
6 import org.jetbrains.plugins.ruby.testing.sm.runner.ui.SMTRunnerConsoleView;
7 import org.jetbrains.plugins.ruby.testing.sm.runner.ui.SMTRunnerTestTreeView;
8 import org.jetbrains.plugins.ruby.testing.sm.runner.ui.SMTestRunnerResultsForm;
10 import javax.swing.tree.DefaultMutableTreeNode;
11 import javax.swing.tree.TreeModel;
12 import java.util.List;
14 /**
15 * @author Roman Chernyatchik
17 public class GeneralToRTestUnitEventsConvertorTest extends BaseSMTRunnerTestCase {
18 private SMTRunnerConsoleView myConsole;
19 private GeneralToSMTRunnerEventsConvertor myEventsProcessor;
20 private TreeModel myTreeModel;
21 private SMTestRunnerResultsForm myResultsViewer;
23 @Override
24 protected void setUp() throws Exception {
25 super.setUp();
27 final TestConsoleProperties consoleProperties = createConsoleProperties();
28 myResultsViewer = (SMTestRunnerResultsForm)createResultsViewer(consoleProperties);
30 myConsole = new SMTRunnerConsoleView(consoleProperties, myResultsViewer);
31 myEventsProcessor = new GeneralToSMTRunnerEventsConvertor(myResultsViewer.getTestsRootNode());
32 myEventsProcessor.addEventsListener(myResultsViewer);
33 myTreeModel = myResultsViewer.getTreeView().getModel();
35 myEventsProcessor.onStartTesting();
38 @Override
39 protected void tearDown() throws Exception {
40 Disposer.dispose(myEventsProcessor);
41 Disposer.dispose(myConsole);
43 super.tearDown();
46 public void testOnStartedTesting() {
47 final Object rootTreeNode = myTreeModel.getRoot();
48 assertEquals(0, myTreeModel.getChildCount(rootTreeNode));
50 final SMTRunnerNodeDescriptor nodeDescriptor =
51 (SMTRunnerNodeDescriptor)((DefaultMutableTreeNode)rootTreeNode).getUserObject();
52 assertFalse(nodeDescriptor.expandOnDoubleClick());
54 final SMTestProxy rootProxy = SMTRunnerTestTreeView.getTestProxyFor(rootTreeNode);
55 assertNotNull(rootProxy);
57 assertTrue(rootProxy.wasLaunched());
58 assertTrue(rootProxy.isInProgress());
59 assertTrue(rootProxy.isLeaf());
61 assertEquals("[root]", rootTreeNode.toString());
64 public void testOnTestStarted() throws InterruptedException {
65 onTestStarted("some_test");
66 final String fullName = myEventsProcessor.getFullTestName("some_test");
67 final SMTestProxy proxy = myEventsProcessor.getProxyByFullTestName(fullName);
69 assertNotNull(proxy);
70 assertTrue(proxy.isInProgress());
72 final Object rootTreeNode = (myTreeModel.getRoot());
73 assertEquals(1, myTreeModel.getChildCount(rootTreeNode));
74 final SMTestProxy rootProxy = SMTRunnerTestTreeView.getTestProxyFor(rootTreeNode);
75 assertNotNull(rootProxy);
76 assertSameElements(rootProxy.getChildren(), proxy);
79 onTestStarted("some_test2");
80 final String fullName2 = myEventsProcessor.getFullTestName("some_test2");
81 final SMTestProxy proxy2 = myEventsProcessor.getProxyByFullTestName(fullName2);
82 assertSameElements(rootProxy.getChildren(), proxy, proxy2);
85 public void testOnTestStarted_Twice() {
86 onTestStarted("some_test");
87 onTestStarted("some_test");
89 assertEquals(1, myEventsProcessor.getRunningTestsQuantity());
92 public void testOnTestFailure() {
93 onTestStarted("some_test");
94 myEventsProcessor.onTestFailure("some_test", "", "", false);
96 final String fullName = myEventsProcessor.getFullTestName("some_test");
97 final SMTestProxy proxy = myEventsProcessor.getProxyByFullTestName(fullName);
99 assertTrue(proxy.isDefect());
100 assertFalse(proxy.isInProgress());
103 public void testOnTestFailure_Twice() {
104 onTestStarted("some_test");
105 myEventsProcessor.onTestFailure("some_test", "", "", false);
106 myEventsProcessor.onTestFailure("some_test", "", "", false);
108 assertEquals(1, myEventsProcessor.getRunningTestsQuantity());
109 assertEquals(1, myEventsProcessor.getFailedTestsSet().size());
112 public void testOnTestError() {
113 onTestStarted("some_test");
114 myEventsProcessor.onTestFailure("some_test", "", "", true);
116 final String fullName = myEventsProcessor.getFullTestName("some_test");
117 final SMTestProxy proxy = myEventsProcessor.getProxyByFullTestName(fullName);
119 assertTrue(proxy.isDefect());
120 assertFalse(proxy.isInProgress());
123 public void testOnTestIgnored() {
124 onTestStarted("some_test");
125 myEventsProcessor.onTestIgnored("some_test", "");
127 final String fullName = myEventsProcessor.getFullTestName("some_test");
128 final SMTestProxy proxy = myEventsProcessor.getProxyByFullTestName(fullName);
130 assertTrue(proxy.isDefect());
131 assertFalse(proxy.isInProgress());
134 public void testOnTestFinished() {
135 onTestStarted("some_test");
136 final String fullName = myEventsProcessor.getFullTestName("some_test");
137 final SMTestProxy proxy = myEventsProcessor.getProxyByFullTestName(fullName);
138 myEventsProcessor.onTestFinished("some_test", 10);
140 assertEquals(0, myEventsProcessor.getRunningTestsQuantity());
141 assertEquals(0, myEventsProcessor.getFailedTestsSet().size());
144 assertFalse(proxy.isDefect());
145 assertFalse(proxy.isInProgress());
147 //Tree
148 final Object rootTreeNode = myTreeModel.getRoot();
149 assertEquals(1, myTreeModel.getChildCount(rootTreeNode));
150 final SMTestProxy rootProxy = SMTRunnerTestTreeView.getTestProxyFor(rootTreeNode);
151 assertNotNull(rootProxy);
152 assertSameElements(rootProxy.getChildren(), proxy);
155 //TODO[romeo] catch assertion
156 //public void testFinished_Twice() {
157 // myEventsProcessor.onTestStarted("some_test");
158 // myEventsProcessor.onTestFinished("some_test");
159 // myEventsProcessor.onTestFinished("some_test");
161 // assertEquals(1, myEventsProcessor.getTestsCurrentCount());
162 // assertEquals(0, myEventsProcessor.getRunningTestsFullNameToProxy().size());
163 // assertEquals(0, myEventsProcessor.getFailedTestsSet().size());
167 public void testOnTestFinished_EmptySuite() {
168 myEventsProcessor.onFinishTesting();
170 //Tree
171 final Object rootTreeNode = myTreeModel.getRoot();
172 assertEquals(0, myTreeModel.getChildCount(rootTreeNode));
173 final SMTestProxy rootProxy = SMTRunnerTestTreeView.getTestProxyFor(rootTreeNode);
174 assertNotNull(rootProxy);
176 assertFalse(rootProxy.isInProgress());
177 assertFalse(rootProxy.isDefect());
180 public void testOnFinishedTesting_WithFailure() {
181 onTestStarted("test");
182 myEventsProcessor.onTestFailure("test", "", "", false);
183 myEventsProcessor.onTestFinished("test", 10);
184 myEventsProcessor.onFinishTesting();
186 //Tree
187 final Object rootTreeNode = myTreeModel.getRoot();
188 assertEquals(1, myTreeModel.getChildCount(rootTreeNode));
189 final SMTestProxy rootProxy = SMTRunnerTestTreeView.getTestProxyFor(rootTreeNode);
190 assertNotNull(rootProxy);
192 assertFalse(rootProxy.isInProgress());
193 assertTrue(rootProxy.isDefect());
196 public void testOnFinishedTesting_WithError() {
197 onTestStarted("test");
198 myEventsProcessor.onTestFailure("test", "", "", true);
199 myEventsProcessor.onTestFinished("test", 10);
200 myEventsProcessor.onFinishTesting();
202 //Tree
203 final Object rootTreeNode = myTreeModel.getRoot();
204 assertEquals(1, myTreeModel.getChildCount(rootTreeNode));
205 final SMTestProxy rootProxy = SMTRunnerTestTreeView.getTestProxyFor(rootTreeNode);
206 assertNotNull(rootProxy);
208 assertFalse(rootProxy.isInProgress());
209 assertTrue(rootProxy.isDefect());
212 public void testOnFinishedTesting_WithIgnored() {
213 onTestStarted("test");
214 myEventsProcessor.onTestIgnored("test", "");
215 myEventsProcessor.onTestFinished("test", 10);
216 myEventsProcessor.onFinishTesting();
218 //Tree
219 final Object rootTreeNode = myTreeModel.getRoot();
220 assertEquals(1, myTreeModel.getChildCount(rootTreeNode));
221 final SMTestProxy rootProxy = SMTRunnerTestTreeView.getTestProxyFor(rootTreeNode);
222 assertNotNull(rootProxy);
224 assertFalse(rootProxy.isInProgress());
225 assertTrue(rootProxy.isDefect());
228 public void testOnFinishedTesting_twice() {
229 myEventsProcessor.onFinishTesting();
231 final Marker finishedMarker = new Marker();
232 myEventsProcessor.addEventsListener(new SMTRunnerEventsAdapter(){
233 @Override
234 public void onTestingFinished() {
235 finishedMarker.set();
238 myEventsProcessor.onFinishTesting();
239 assertFalse(finishedMarker.isSet());
242 public void testOnSuiteStarted() {
243 onTestSuiteStarted("suite1");
245 //lets check that new tests have right parent
246 onTestStarted("test1");
247 final SMTestProxy test1 =
248 myEventsProcessor.getProxyByFullTestName(myEventsProcessor.getFullTestName("test1"));
249 assertEquals("suite1", test1.getParent().getName());
251 //lets check that new suits have righ parent
252 onTestSuiteStarted("suite2");
253 onTestSuiteStarted("suite3");
254 onTestStarted("test2");
255 final SMTestProxy test2 =
256 myEventsProcessor.getProxyByFullTestName(myEventsProcessor.getFullTestName("test2"));
257 assertEquals("suite3", test2.getParent().getName());
258 assertEquals("suite2", test2.getParent().getParent().getName());
260 myEventsProcessor.onTestFinished("test2", 10);
262 //check that after finishing suite (suite3), current will be parent of finished suite (i.e. suite2)
263 myEventsProcessor.onSuiteFinished("suite3");
264 onTestStarted("test3");
265 final SMTestProxy test3 =
266 myEventsProcessor.getProxyByFullTestName(myEventsProcessor.getFullTestName("test3"));
267 assertEquals("suite2", test3.getParent().getName());
269 //clean up
270 myEventsProcessor.onSuiteFinished("suite2");
271 myEventsProcessor.onSuiteFinished("suite1");
274 public void testGetCurrentTestSuite() {
275 assertEquals(myResultsViewer.getTestsRootNode(), myEventsProcessor.getCurrentSuite());
277 onTestSuiteStarted("my_suite");
278 assertEquals("my_suite", myEventsProcessor.getCurrentSuite().getName());
281 public void testConcurrentSuite_intersected() {
282 myEventsProcessor.onSuiteStarted("suite1");
283 myEventsProcessor.onTestStarted("suite2.test1");
285 final SMTestProxy test1 =
286 myEventsProcessor.getProxyByFullTestName(myEventsProcessor.getFullTestName("suite2.test1"));
288 myEventsProcessor.onSuiteFinished("suite1");
290 myEventsProcessor.onSuiteStarted("suite2");
291 myEventsProcessor.onTestFinished("suite2.test1", 10);
292 myEventsProcessor.onSuiteFinished("suite2");
294 assertEquals("suite1", test1.getParent().getName());
296 final List<? extends SMTestProxy> children =
297 myResultsViewer.getTestsRootNode().getChildren();
298 assertEquals(2, children.size());
299 assertEquals("suite1", children.get(0).getName());
300 assertEquals(1, children.get(0).getChildren().size());
301 assertEquals("suite2", children.get(1).getName());
302 assertEquals(0, children.get(1).getChildren().size());
305 private void onTestStarted(final String testName) {
306 myEventsProcessor.onTestStarted(testName);
307 myResultsViewer.performUpdate();
310 private void onTestSuiteStarted(final String suiteName) {
311 myEventsProcessor.onSuiteStarted(suiteName);
312 myResultsViewer.performUpdate();