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
;
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
;
24 protected void setUp() throws Exception
{
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();
39 protected void tearDown() throws Exception
{
40 Disposer
.dispose(myEventsProcessor
);
41 Disposer
.dispose(myConsole
);
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
);
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());
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();
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();
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();
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();
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(){
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());
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();