KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > gui > debuggercore > Actions


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  * The Original Software is NetBeans.
15  * The Initial Developer of the Original Software is Sun Microsystems, Inc.
16  * Portions created by Sun Microsystems, Inc. are Copyright (C) 2005
17  * All Rights Reserved.
18  *
19  * Contributor(s): Sun Microsystems, Inc.
20  */

21
22 package gui.debuggercore;
23
24 import java.awt.event.KeyEvent JavaDoc;
25 import java.io.File JavaDoc;
26 import junit.textui.TestRunner;
27 import org.netbeans.jellytools.Bundle;
28 import org.netbeans.jellytools.EditorOperator;
29 import org.netbeans.jellytools.JellyTestCase;
30 import org.netbeans.jellytools.MainWindowOperator;
31 import org.netbeans.jellytools.ProjectsTabOperator;
32 import org.netbeans.jellytools.actions.Action;
33 import org.netbeans.jellytools.actions.DebugProjectAction;
34 import org.netbeans.jellytools.actions.OpenAction;
35 import org.netbeans.jellytools.modules.debugger.actions.ContinueAction;
36 import org.netbeans.jellytools.modules.debugger.actions.RunToCursorAction;
37 import org.netbeans.jellytools.modules.debugger.actions.StepIntoAction;
38 import org.netbeans.jellytools.modules.debugger.actions.StepOutAction;
39 import org.netbeans.jellytools.modules.debugger.actions.StepOverAction;
40 import org.netbeans.jellytools.nodes.Node;
41 import org.netbeans.jellytools.nodes.SourcePackagesNode;
42 import org.netbeans.jemmy.EventTool;
43 import org.netbeans.jemmy.JemmyProperties;
44 import org.netbeans.jemmy.operators.ContainerOperator;
45 import org.netbeans.jemmy.operators.JPopupMenuOperator;
46 import org.netbeans.jemmy.util.PNGEncoder;
47 import org.netbeans.junit.NbTestSuite;
48
49 /**
50  *
51  * @author cincura, ehucka
52  */

53 public class Actions extends JellyTestCase {
54     
55     public Actions(String JavaDoc name) {
56         super(name);
57     }
58     
59     public static void main(String JavaDoc[] args) {
60         TestRunner.run(suite());
61     }
62     
63     public static NbTestSuite suite() {
64         NbTestSuite suite = new NbTestSuite();
65         suite.addTest(new Actions("testCheckEnabledActions"));
66         suite.addTest(new Actions("testCheckEnabledActionsDebugging"));
67         suite.addTest(new Actions("testToggleBreakpoints"));
68         suite.addTest(new Actions("testStartDebugging"));
69         suite.addTest(new Actions("testStepInto"));
70         suite.addTest(new Actions("testStepOver"));
71         suite.addTest(new Actions("testRunToCursor"));
72         suite.addTest(new Actions("testStepOut"));
73         suite.addTest(new Actions("testRemoveBreakpoint"));
74         suite.addTest(new Actions("testContinue"));
75         suite.addTest(new Actions("testStepOverExpression"));
76         suite.addTest(new Actions("testPause"));
77         return suite;
78     }
79     
80     /** setUp method */
81     public void setUp() {
82         System.out.println("######## "+getName()+" #######");
83     }
84     
85     public void tearDown() {
86         JemmyProperties.getCurrentOutput().printTrace("\nteardown\n");
87         if (getName().equals("testPause")) {
88             Utilities.endAllSessions();
89             Utilities.deleteAllBreakpoints();
90         }
91     }
92     
93     public void testCheckEnabledActions() throws Throwable JavaDoc {
94         try {
95             new Action(null, Utilities.setMainProjectAction).perform(new ProjectsTabOperator().getProjectRootNode(Utilities.testProjectName));
96             
97             Node projectNode = ProjectsTabOperator.invoke().getProjectRootNode(Utilities.testProjectName);
98             Utilities.verifyPopup(projectNode, new String JavaDoc[] {
99                 //check build project action
100
Bundle.getString("org.netbeans.modules.java.j2seproject.ui.Bundle", "LBL_BuildAction_Name"),
101                 //check run project action
102
Bundle.getString("org.netbeans.modules.java.j2seproject.ui.Bundle", "LBL_RunAction_Name"),
103                 //check debug project action
104
Bundle.getString("org.netbeans.modules.java.j2seproject.ui.Bundle", "LBL_DebugAction_Name")
105             });
106             
107             //main menu actions
108
//check main menu debug main project action
109
assertTrue(Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.debugMainProjectItem, true));
110             //Step into
111
assertTrue(Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.stepIntoItem, true));
112             //new breakpoint
113
assertTrue(Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.newBreakpointItem, true));
114             //new watch
115
assertTrue(Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.newWatchItem, true));
116             //main menu actions disabled
117
//check finish debugger
118
assertFalse(Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.finishSessionsItem, false));
119             //pause
120
assertFalse(Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.pauseItem, false));
121             //continue
122
assertFalse(Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.continueItem, false));
123             //step over
124
assertFalse(Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.stepOverItem, false));
125             //step over expression
126
assertFalse(Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.stepOverExpresItem, false));
127             //step out
128
assertFalse(Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.stepOutItem, false));
129             //run to cursor
130
assertFalse(Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.runToCursorItem, false));
131             //run into method
132
assertFalse(Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.runIntoMethodItem, false));
133             //apply code changes
134
assertFalse(Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.applyCodeChangesItem, false));
135             //toggle breakpoint
136
assertFalse(Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.toggleBreakpointItem, false));
137             //evaluate expression
138
assertFalse(Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.evaluateExpressionItem, false));
139             MainWindowOperator.getDefault().pushKey(KeyEvent.VK_ESCAPE);
140             
141             //open source file
142
Node beanNode = new Node(new SourcePackagesNode(Utilities.testProjectName), "examples.advanced|MemoryView.java"); //NOI18N
143
new OpenAction().performAPI(beanNode); // NOI18N
144
EditorOperator eo = new EditorOperator("MemoryView.java");
145             Utilities.setCaret(eo, 80);
146             new EventTool().waitNoEvent(1000); //because of issue 70731
147
//main menu file actions
148
//check run file action
149
String JavaDoc actionName = Bundle.getStringTrimmed("org.netbeans.modules.project.ui.actions.Bundle", "LBL_RunSingleAction_Name", new Object JavaDoc[] {new Integer JavaDoc(1), "MemoryView.java"});
150             assertTrue(Utilities.runMenu+"|"+Utilities.runFileMenu+"|"+actionName+" is not enabled", Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.runFileMenu+"|"+actionName, true));
151             //check debug file action
152
actionName = Bundle.getStringTrimmed("org.netbeans.modules.project.ui.actions.Bundle", "LBL_DebugSingleAction_Name", new Object JavaDoc[] {new Integer JavaDoc(1), "MemoryView.java"});
153             assertTrue(Utilities.runMenu+"|"+Utilities.runFileMenu+"|"+actionName+" is not enabled", Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.runFileMenu+"|"+actionName, true));
154             //run to cursor
155
assertTrue(Utilities.runMenu+"|"+Utilities.runToCursorItem+" is not enabled", Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.runToCursorItem, true));
156             //toggle breakpoint
157
assertTrue(Utilities.runMenu+"|"+Utilities.toggleBreakpointItem+" is not enabled", Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.toggleBreakpointItem, true));
158             MainWindowOperator.getDefault().pushKey(KeyEvent.VK_ESCAPE);
159             MainWindowOperator.getDefault().pushKey(KeyEvent.VK_ESCAPE);
160             
161             //source popup menu actions
162
JPopupMenuOperator operator = new JPopupMenuOperator(JPopupMenuOperator.callPopup(eo, 50, 50));
163             Utilities.verifyPopup(operator, new String JavaDoc[] {
164                 //check debug file
165
Bundle.getString("org.netbeans.modules.java.project.Bundle", "LBL_DebugFile_Action"),
166                 //new watch
167
Bundle.getString("org.netbeans.editor.Bundle", "add-watch"),
168                 //check toggle breakpoint
169
Bundle.getString("org.netbeans.editor.Bundle", "toggle-breakpoint")
170             });
171             
172             //tools menu
173
//debug is not visible
174
for (int i=0;i < MainWindowOperator.getDefault().getToolbarCount();i++) {
175                 assertFalse(MainWindowOperator.getDefault().getToolbarName(i).equals(Utilities.debugToolbarLabel));
176             }
177             //run
178
ContainerOperator tbrop = MainWindowOperator.getDefault().getToolbar(Bundle.getString("org.netbeans.modules.project.ui.Bundle", "Toolbars/Build"));
179             assertTrue(MainWindowOperator.getDefault().getToolbarButton(tbrop, Bundle.getStringTrimmed("org.netbeans.modules.project.ui.actions.Bundle", "LBL_DebugMainProjectAction_Name")).isEnabled());
180             assertTrue(MainWindowOperator.getDefault().getToolbarButton(tbrop, Bundle.getStringTrimmed("org.netbeans.modules.debugger.ui.actions.Bundle", "CTL_Connect")).isEnabled());
181             
182             eo.close();
183         } catch (Throwable JavaDoc th) {
184             try {
185                 // capture screen before cleanup in finally clause is completed
186
PNGEncoder.captureScreen(getWorkDir().getAbsolutePath()+File.separator+"screenBeforeCleanup.png");
187             } catch (Exception JavaDoc e1) {
188                 // ignore it
189
}
190             throw th;
191         }
192     }
193     
194     public void testCheckEnabledActionsDebugging() throws Throwable JavaDoc {
195         try {
196             //open source
197
Node projectNode = ProjectsTabOperator.invoke().getProjectRootNode(Utilities.testProjectName);
198             Node beanNode = new Node(new SourcePackagesNode(Utilities.testProjectName), "examples.advanced|MemoryView.java"); //NOI18N
199
new OpenAction().performAPI(beanNode); // NOI18N
200
EditorOperator eo = new EditorOperator("MemoryView.java");
201             //place breakpoint
202
Utilities.toggleBreakpoint(eo, 104);
203             //start debugging
204
new DebugProjectAction().perform(projectNode);
205             Utilities.getDebugToolbar().waitComponentVisible(true);
206             //wait for breakpoint
207
Utilities.waitStatusText("Thread main stopped at MemoryView.java:104");
208             //check actions
209

210             //main menu actions
211
//check main menu debug main project action
212
assertTrue(Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.debugMainProjectItem, true));
213             //Step into
214
assertTrue(Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.stepIntoItem, true));
215             //new breakpoint
216
assertTrue(Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.newBreakpointItem, true));
217             //new watch
218
assertTrue(Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.newWatchItem, true));
219             //check finish debugger
220
assertTrue(Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.finishSessionsItem, true));
221             //pause
222
assertFalse(Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.pauseItem, false));
223             //continue
224
assertTrue(Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.continueItem, true));
225             //step over
226
assertTrue(Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.stepOverItem, true));
227             //step over expression
228
assertTrue(Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.stepOverExpresItem, true));
229             //step out
230
assertTrue(Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.stepOutItem, true));
231             //run to cursor
232
assertTrue(Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.runToCursorItem, true));
233             //run into method
234
assertTrue(Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.runIntoMethodItem, true));
235             //apply code changes
236
assertTrue(Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.applyCodeChangesItem, true));
237             //toggle breakpoint
238
assertTrue(Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.toggleBreakpointItem, true));
239             //evaluate expression
240
assertTrue(Utilities.verifyMainMenu(Utilities.runMenu+"|"+Utilities.evaluateExpressionItem, true));
241             MainWindowOperator.getDefault().pushKey(KeyEvent.VK_ESCAPE);
242             
243             //debug toolbar
244
ContainerOperator debugToolbarOper = Utilities.getDebugToolbar();
245             assertTrue(MainWindowOperator.getDefault().getToolbarButton(debugToolbarOper,
246                     Bundle.getStringTrimmed("org.netbeans.modules.debugger.ui.actions.Bundle", "CTL_KillAction_name")).isEnabled());
247             assertFalse(MainWindowOperator.getDefault().getToolbarButton(debugToolbarOper,
248                     Bundle.getStringTrimmed("org.netbeans.modules.debugger.ui.actions.Bundle", "CTL_Pause_action_name")).isEnabled());
249             assertTrue(MainWindowOperator.getDefault().getToolbarButton(debugToolbarOper,
250                     Bundle.getStringTrimmed("org.netbeans.modules.debugger.ui.actions.Bundle", "CTL_Continue_action_name")).isEnabled());
251             //step
252
assertTrue(MainWindowOperator.getDefault().getToolbarButton(debugToolbarOper,
253                     Bundle.getStringTrimmed("org.netbeans.modules.debugger.ui.actions.Bundle", "CTL_Step_over_action_name")).isEnabled());
254             assertTrue(MainWindowOperator.getDefault().getToolbarButton(debugToolbarOper,
255                     Bundle.getStringTrimmed("org.netbeans.modules.debugger.ui.actions.Bundle", "CTL_Step_into_action_name")).isEnabled());
256             assertTrue(MainWindowOperator.getDefault().getToolbarButton(debugToolbarOper,
257                     Bundle.getStringTrimmed("org.netbeans.modules.debugger.ui.actions.Bundle", "CTL_Step_out_action_name")).isEnabled());
258             //run to cursor
259
assertTrue(MainWindowOperator.getDefault().getToolbarButton(debugToolbarOper,
260                     Bundle.getStringTrimmed("org.netbeans.modules.debugger.ui.actions.Bundle", "CTL_Run_to_cursor_action_name")).isEnabled());
261             assertTrue(MainWindowOperator.getDefault().getToolbarButton(debugToolbarOper,
262                     Bundle.getStringTrimmed("org.netbeans.modules.debugger.ui.actions.Bundle", "CTL_Fix_action_name")).isEnabled());
263             assertTrue(MainWindowOperator.getDefault().getToolbarButton(debugToolbarOper,
264                     Bundle.getStringTrimmed("org.netbeans.modules.debugger.ui.actions.Bundle", "CTL_New_Watch")).isEnabled());
265             
266             //remove breakpoint
267
Utilities.toggleBreakpoint(eo, 104, false);
268             //finish debugging
269
Utilities.endAllSessions();
270             //close sources
271
eo.close();
272         } catch (Throwable JavaDoc th) {
273             try {
274                 // capture screen before cleanup in finally clause is completed
275
PNGEncoder.captureScreen(getWorkDir().getAbsolutePath()+File.separator+"screenBeforeCleanup.png");
276             } catch (Exception JavaDoc e1) {
277                 // ignore it
278
}
279             throw th;
280         }
281     }
282     
283     public void testToggleBreakpoints() throws Throwable JavaDoc {
284         try {
285             //open source
286
Node projectNode = ProjectsTabOperator.invoke().getProjectRootNode(Utilities.testProjectName);
287             Node beanNode = new Node(new SourcePackagesNode(Utilities.testProjectName), "examples.advanced|MemoryView.java"); //NOI18N
288
new OpenAction().performAPI(beanNode); // NOI18N
289
EditorOperator eo = new EditorOperator("MemoryView.java");
290             //place breakpoint
291
Utilities.toggleBreakpoint(eo, 80);
292             assertTrue("Breakpoint annotation is not displayed", Utilities.checkAnnotation(eo, 80, "Breakpoint"));
293         } catch (Throwable JavaDoc th) {
294             try {
295                 // capture screen before cleanup in finally clause is completed
296
PNGEncoder.captureScreen(getWorkDir().getAbsolutePath()+File.separator+"screenBeforeCleanup.png");
297             } catch (Exception JavaDoc e1) {
298                 // ignore it
299
}
300             throw th;
301         }
302     }
303     
304     static int lastLineNumber = 0;
305     
306     public void testStartDebugging() throws Throwable JavaDoc {
307         try {
308             //start debugging
309
Node projectNode = ProjectsTabOperator.invoke().getProjectRootNode(Utilities.testProjectName);
310             new DebugProjectAction().perform(projectNode);
311             Utilities.getDebugToolbar().waitComponentVisible(true);
312             //wait for breakpoint
313
Utilities.waitStatusText("Thread main stopped at MemoryView.java:80");
314             EditorOperator eo = new EditorOperator("MemoryView.java");
315             assertTrue("Breakpoint annotation is not on line 80", Utilities.checkAnnotation(eo, 80, "Breakpoint"));
316             assertTrue("Current PC annotation is not on line 80", Utilities.checkAnnotation(eo, 80, "CurrentPC"));
317         } catch (Throwable JavaDoc th) {
318             try {
319                 // capture screen before cleanup in finally clause is completed
320
PNGEncoder.captureScreen(getWorkDir().getAbsolutePath()+File.separator+"screenBeforeCleanup.png");
321             } catch (Exception JavaDoc e1) {
322                 // ignore it
323
}
324             throw th;
325         }
326     }
327     
328     public void testStepInto() throws Throwable JavaDoc {
329         try {
330             new StepIntoAction().performShortcut();
331             lastLineNumber = Utilities.waitDebuggerConsole("Thread main stopped at MemoryView.java:92", lastLineNumber+1);
332             //check 80, 92
333
EditorOperator eo = new EditorOperator("MemoryView.java");
334             assertTrue("CurrentPC annotation is not on line 92", Utilities.checkAnnotation(eo, 92, "CurrentPC"));
335             assertTrue("Call Site annotation is not on line 80", Utilities.checkAnnotation(eo, 80, "CallSite"));
336         } catch (Throwable JavaDoc th) {
337             try {
338                 // capture screen before cleanup in finally clause is completed
339
PNGEncoder.captureScreen(getWorkDir().getAbsolutePath()+File.separator+"screenBeforeCleanup.png");
340             } catch (Exception JavaDoc e1) {
341                 // ignore it
342
}
343             throw th;
344         }
345     }
346     
347     public void testStepOver() throws Throwable JavaDoc {
348         try {
349             new StepOverAction().performShortcut();
350             lastLineNumber = Utilities.waitDebuggerConsole("Thread main stopped at MemoryView.java:93", lastLineNumber+1);
351             //check 80, 82
352
EditorOperator eo = new EditorOperator("MemoryView.java");
353             assertFalse("CurrentPC annotation remains on line 92", Utilities.checkAnnotation(eo, 92, "CurrentPC"));
354             assertTrue("CurrentPC annotation is not on line 93", Utilities.checkAnnotation(eo, 93, "CurrentPC"));
355         } catch (Throwable JavaDoc th) {
356             try {
357                 // capture screen before cleanup in finally clause is completed
358
PNGEncoder.captureScreen(getWorkDir().getAbsolutePath()+File.separator+"screenBeforeCleanup.png");
359             } catch (Exception JavaDoc e1) {
360                 // ignore it
361
}
362             throw th;
363         }
364     }
365     
366     public void testRunToCursor() throws Throwable JavaDoc {
367         try {
368             EditorOperator eo = new EditorOperator("MemoryView.java");
369             Utilities.setCaret(eo, 109);
370             //run to cursor
371
new RunToCursorAction().perform();
372             lastLineNumber = Utilities.waitDebuggerConsole("Thread main stopped at MemoryView.java:109", lastLineNumber+1);
373             //check line
374
assertFalse("Current PC annotation remains on line 93", Utilities.checkAnnotation(eo, 93, "CurrentPC"));
375             assertTrue("Current PC annotation is not on line 109", Utilities.checkAnnotation(eo, 109, "CurrentPC"));
376         } catch (Throwable JavaDoc th) {
377             try {
378                 // capture screen before cleanup in finally clause is completed
379
PNGEncoder.captureScreen(getWorkDir().getAbsolutePath()+File.separator+"screenBeforeCleanup.png");
380             } catch (Exception JavaDoc e1) {
381                 // ignore it
382
}
383             throw th;
384         }
385     }
386     
387     public void testStepOut() throws Throwable JavaDoc {
388         try {
389             new StepOutAction().performShortcut();
390             lastLineNumber = Utilities.waitDebuggerConsole("Thread main stopped at MemoryView.java:80", lastLineNumber+1);
391             //check 82, 92
392
EditorOperator eo = new EditorOperator("MemoryView.java");
393             assertFalse("Current PC annotation remains on line 109", Utilities.checkAnnotation(eo, 109, "CurrentPC"));
394             assertTrue("Current PC annotation is not on line 80", Utilities.checkAnnotation(eo, 80, "CurrentExpressionLine"));
395         } catch (Throwable JavaDoc th) {
396             try {
397                 // capture screen before cleanup in finally clause is completed
398
PNGEncoder.captureScreen(getWorkDir().getAbsolutePath()+File.separator+"screenBeforeCleanup.png");
399             } catch (Exception JavaDoc e1) {
400                 // ignore it
401
}
402             throw th;
403         }
404     }
405     
406     public void testRemoveBreakpoint() throws Throwable JavaDoc {
407         try {
408             EditorOperator eo = new EditorOperator("MemoryView.java");
409             //remove breakpoint
410
Utilities.toggleBreakpoint(eo, 80, false);
411             assertFalse("Breakpoint annotation is not removed from line 80", Utilities.checkAnnotation(eo, 80, "Breakpoint"));
412         } catch (Throwable JavaDoc th) {
413             try {
414                 // capture screen before cleanup in finally clause is completed
415
PNGEncoder.captureScreen(getWorkDir().getAbsolutePath()+File.separator+"screenBeforeCleanup.png");
416             } catch (Exception JavaDoc e1) {
417                 // ignore it
418
}
419             throw th;
420         }
421     }
422     
423     public void testContinue() throws Throwable JavaDoc {
424         try {
425             EditorOperator eo = new EditorOperator("MemoryView.java");
426             //remove breakpoint
427
Utilities.toggleBreakpoint(eo, 104, true);
428             new ContinueAction().perform();
429             lastLineNumber = Utilities.waitDebuggerConsole("Thread main stopped at MemoryView.java:104", lastLineNumber+1);
430             assertFalse("Current PC annotation remains on line 80", Utilities.checkAnnotation(eo, 80, "CurrentPC"));
431             assertTrue("Current PC annotation is not on line 104", Utilities.checkAnnotation(eo, 104, "CurrentPC"));
432             Utilities.toggleBreakpoint(eo, 104, false);
433         } catch (Throwable JavaDoc th) {
434             try {
435                 // capture screen before cleanup in finally clause is completed
436
PNGEncoder.captureScreen(getWorkDir().getAbsolutePath()+File.separator+"screenBeforeCleanup.png");
437             } catch (Exception JavaDoc e1) {
438                 // ignore it
439
}
440             throw th;
441         }
442     }
443     
444     public void testStepOverExpression() throws Throwable JavaDoc {
445         try {
446             EditorOperator eo = new EditorOperator("MemoryView.java");
447             
448             new Action(Utilities.runMenu+"|"+Utilities.stepOverExpresItem, null).perform();
449             lastLineNumber = Utilities.waitDebuggerConsole("Thread main stopped at MemoryView.java:104", lastLineNumber+1);
450             assertTrue("CurrentExpressionLine annotation is not on line 105", Utilities.checkAnnotation(eo, 105, "CurrentExpressionLine"));
451             new Action(Utilities.runMenu+"|"+Utilities.stepOverExpresItem, null).perform();
452             lastLineNumber = Utilities.waitDebuggerConsole("Thread main stopped at MemoryView.java:104", lastLineNumber+1);
453             assertTrue("CurrentExpressionLine annotation is not on line 106", Utilities.checkAnnotation(eo, 106, "CurrentExpressionLine"));
454             new Action(Utilities.runMenu+"|"+Utilities.stepOverExpresItem, null).perform();
455             lastLineNumber = Utilities.waitDebuggerConsole("Thread main stopped at MemoryView.java:104", lastLineNumber+1);
456             assertTrue("CurrentExpressionLine annotation is not on line 107", Utilities.checkAnnotation(eo, 107, "CurrentExpressionLine"));
457             new Action(Utilities.runMenu+"|"+Utilities.stepOverExpresItem, null).perform();
458             lastLineNumber = Utilities.waitDebuggerConsole("Thread main stopped at MemoryView.java:104", lastLineNumber+1);
459             assertTrue("CurrentExpressionLine annotation is not on line 104", Utilities.checkAnnotation(eo, 104, "CurrentExpressionLine"));
460             new Action(Utilities.runMenu+"|"+Utilities.stepOverExpresItem, null).perform();
461             lastLineNumber = Utilities.waitDebuggerConsole("Thread main stopped at MemoryView.java:104", lastLineNumber+1);
462             assertTrue("CurrentExpressionLine annotation is not on line 104", Utilities.checkAnnotation(eo, 104, "CurrentExpressionLine"));
463             new Action(Utilities.runMenu+"|"+Utilities.stepOverExpresItem, null).perform();
464             lastLineNumber = Utilities.waitDebuggerConsole("Thread main stopped at MemoryView.java:109", lastLineNumber+1);
465             assertTrue("Current PC annotation is not on line 109", Utilities.checkAnnotation(eo, 109, "CurrentPC"));
466             
467         } catch (Throwable JavaDoc th) {
468             try {
469                 // capture screen before cleanup in finally clause is completed
470
PNGEncoder.captureScreen(getWorkDir().getAbsolutePath()+File.separator+"screenBeforeCleanup.png");
471             } catch (Exception JavaDoc e1) {
472                 // ignore it
473
}
474             throw th;
475         }
476     }
477     
478     public void testPause() throws Throwable JavaDoc {
479         try {
480             EditorOperator eo = new EditorOperator("MemoryView.java");
481             //place breakpoint
482
Utilities.toggleBreakpoint(eo, 80);
483             //continue
484
new ContinueAction().perform();
485             lastLineNumber = Utilities.waitDebuggerConsole("Thread main stopped at MemoryView.java:80", lastLineNumber+1);
486             //remove breakpoint
487
Utilities.toggleBreakpoint(eo, 80, false);
488             //continue
489
new ContinueAction().perform();
490             String JavaDoc pausePath = Utilities.runMenu+"|"+Utilities.pauseItem;
491             for (int i = 0; i < 10; i++) {
492                 if(MainWindowOperator.getDefault().menuBar().showMenuItem(pausePath).isEnabled()) {
493                     new Action(pausePath, null).perform();
494                 }
495                 MainWindowOperator.getDefault().menuBar().closeSubmenus();
496                 new EventTool().waitNoEvent(500);
497             }
498             Utilities.waitDebuggerConsole("Thread main stopped at ", lastLineNumber+1);
499             eo = new EditorOperator("MemoryView.java");
500             boolean found = false;
501             for (int i = 79; i < 87; i++) {
502                 if (Utilities.checkAnnotation(eo, i, "CallSite")) {
503                     found = true;
504                     break;
505                 }
506             }
507             assertTrue("Call Site annotation is not in for cycle", found);
508             //there should not be any other opened classes - issue 83704
509
eo.closeAllDocuments();
510         } catch (Throwable JavaDoc th) {
511             try {
512                 // capture screen before cleanup in finally clause is completed
513
PNGEncoder.captureScreen(getWorkDir().getAbsolutePath()+File.separator+"screenBeforeCleanup.png");
514             } catch (Exception JavaDoc e1) {
515                 // ignore it
516
}
517             throw th;
518         }
519     }
520 }
521
Popular Tags