alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

What this is

This file is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Other links

The source code

/*
 *                 Sun Public License Notice
 *
 * The contents of this file are subject to the Sun Public License
 * Version 1.0 (the "License"). You may not use this file except in
 * compliance with the License. A copy of the License is available at
 * http://www.sun.com/
 *
 * The Original Code is NetBeans. The Initial Developer of the Original
 * Code is Sun Microsystems, Inc. Portions Copyright 1997-2002 Sun
 * Microsystems, Inc. All Rights Reserved.
 */

package org.netbeans.test.gui.web.AppletDebug;  


import java.io.File;

import org.netbeans.junit.NbTestSuite; 
import org.netbeans.junit.NbTestCase; 
import junit.framework.Test;
import junit.framework.TestSuite;

import org.netbeans.jellytools.EditorOperator;
import org.netbeans.jellytools.ExplorerOperator;
import org.netbeans.jellytools.JellyTestCase;
import org.netbeans.jellytools.MainWindowOperator;
import org.netbeans.jellytools.NbDialogOperator;
import org.netbeans.jellytools.OutputWindowOperator;

import org.netbeans.jellytools.actions.CompileAction;

import org.netbeans.web.test.actions.AddBreakpointAction;
import org.netbeans.web.test.actions.ContinueDebugAction;
import org.netbeans.web.test.actions.FinishDebugAction;
import org.netbeans.web.test.actions.RunToCursorAction;
import org.netbeans.web.test.actions.StartDebugAction;
import org.netbeans.web.test.actions.StepIntoAction;
import org.netbeans.web.test.actions.ToggleBreakpointAction;

import org.netbeans.jemmy.TimeoutExpiredException;
import org.netbeans.jemmy.Waiter;

import org.netbeans.web.test.util.Utils;
import org.netbeans.test.gui.web.util.AppletResponseWaitable;
import org.netbeans.test.gui.web.util.CommonUtils;
import org.netbeans.test.gui.web.util.CompilationUtils;


public class Debug extends JellyTestCase { 

    private static String workDir = null;
    private static String tmpWebModule = null;
    private static String webModule = null;
    private static String wmName = "wm";
    private static String testWMDir = "debug";
    private static String delim = "|";

    private static String osName = null;
    private static String netscape6 = "netscape6";
    private static String netscape4x = "netscape"; 
    private static ExplorerOperator explorer = null;
    private static EditorOperator editor = null;


    public Debug(String testName) { 
        super(testName); 
    } 

    /** Use for execution inside IDE */ 
    public static void main(java.lang.String[] args) { 
        junit.textui.TestRunner.run(suite()); 
    } 

    public static Test suite() {
        workDir = System.getProperty("appletdebug.workdir").replace('/',File.separatorChar); 
	webModule = workDir + File.separatorChar + wmName;
        workDir = webModule+delim+testWMDir;
        explorer = ExplorerOperator.invoke();
        explorer.selectPageFilesystems();
        Utils.handleDialogAfterNewWebModule();
        TestSuite suite = new NbTestSuite(Debug.class); 
        System.out.println("Test started");
        osName = System.getProperty("os.name");
        if(osName.indexOf("Windows")!=-1){
            netscape6 = "netscp6";
            netscape4x = "netscape -browser";
        }
        //System.out.println("osName is: "+osName);
        return suite;

    }


    /**
        Start debugging applet via main menu item
    */

    public void testStartDebugWithoutErrorsMenu() {
        editor = CommonUtils.openFile(workDir, "simpleJApplet");
        (new CompileAction()).perform();
        try{
            MainWindowOperator.getDefault().waitStatusText("Finished simpleJApplet.");
            (new OutputWindowOperator()).selectCompilerPage();
            String output = (new OutputWindowOperator()).getText();
            if(output.indexOf("Finished simpleJApplet.")==-1){
                fail("Compilation failed. Output is:"+output);
            }
        }catch (Exception e){
            fail("Exception occured while compile applet. Exception is:"+e);
            e.printStackTrace();
        }   
        (new StartDebugAction()).performMenu(); 
        try{
            MainWindowOperator.getDefault().waitStatusText("Debugger starting");
            MainWindowOperator.getDefault().waitStatusText("Debugger running");
        }catch (Exception e){
            fail("Output to status line is incorrect");
            e.printStackTrace();
        }
        checkCorrectAppletOutput("simpleJApplet");
        finishDebugger();
    }

    /**
        Start debugging applet via shortcut
    */

    public void testStartDebugWithoutErrorsShortcut() {
        editor = CommonUtils.openFile(workDir, "simpleJApplet");
        (new CompileAction()).perform();
        try{
            MainWindowOperator.getDefault().waitStatusText("Finished simpleJApplet.");
            (new OutputWindowOperator()).selectCompilerPage();
            String output = (new OutputWindowOperator()).getText();
            if(output.indexOf("Finished simpleJApplet.")==-1){
                fail("Compilation failed. Output is:"+output);
            }
        }catch (Exception e){
            fail("Exception occured while compile applet. Exception is:"+e);
            e.printStackTrace();
        }   
        (new StartDebugAction()).performShortcut(); 
        try{
            MainWindowOperator.getDefault().waitStatusText("Debugger starting");
            MainWindowOperator.getDefault().waitStatusText("Debugger running");
        }catch (Exception e){
            fail("Output to status line is incorrect");
            e.printStackTrace();
        }
        checkCorrectAppletOutput("simpleJApplet");
        finishDebugger();
    }
    

    /**
        Start debugging applet via toolbar
    */

    public void testStartDebugWithoutErrorsToolbar() {
        editor = CommonUtils.openFile(workDir, "simpleJApplet");
        
        (new CompileAction()).perform();
        try{
            MainWindowOperator.getDefault().waitStatusText("Finished simpleJApplet.");
            (new OutputWindowOperator()).selectCompilerPage();
            String output = (new OutputWindowOperator()).getText();
            if(output.indexOf("Finished simpleJApplet.")==-1){
                fail("Compilation failed. Output is:"+output);
            }
        }catch (Exception e){
            fail("Exception occured while compile applet. Exception is:"+e);
            e.printStackTrace();
        }   
        (MainWindowOperator.getDefault()).getToolbarButton((MainWindowOperator.getDefault()).getToolbar("Debug"), "Run in Debugger").push();       
        try{
            MainWindowOperator.getDefault().waitStatusText("Debugger starting");
            MainWindowOperator.getDefault().waitStatusText("Debugger running");
        }catch (Exception e){
            fail("Output to status line is incorrect");
            e.printStackTrace();
        }
        checkCorrectAppletOutput("simpleJApplet");
        finishDebugger();
    }


    /** 
        Continue debugging via "Continue" menu item.
    */

    public void testContinueDebugMenu() {
        CommonUtils.checkBreakpointExist("applet2", "debug/applet2", 28, workDir);
        editor = CommonUtils.openFile(workDir, "applet2");
        //(new ToggleBreakpointAction()).performMenu(); 
        (new CompileAction()).perform();
        try{
            MainWindowOperator.getDefault().waitStatusText("Finished applet2.");
            (new OutputWindowOperator()).selectCompilerPage();
            String output = (new OutputWindowOperator()).getText();
            if(output.indexOf("Finished applet2.")==-1){
                fail("Compilation failed. Output is:"+output);
            }
        }catch (Exception e){
            fail("Exception occured while compile applet. Exception is:"+e);
            e.printStackTrace();
        }   
        (new StartDebugAction()).performMenu(); 
        checkDebuggerStoppedOnBreakpoint("debug.applet2", 28);
        (new ContinueDebugAction()).performMenu(); 
        checkCorrectAppletOutput("applet2");
        finishDebugger();
    }

    
    /** 
        Continue debugging via shortcut for "Continue" menu item.
    */

    public void testContinueDebugShortcut() {
        CommonUtils.checkBreakpointExist("applet3", "debug/applet3", 28, workDir);
        editor = CommonUtils.openFile(workDir, "applet3");
        //(new ToggleBreakpointAction()).performMenu(); 
        (new CompileAction()).perform();
        try{
            MainWindowOperator.getDefault().waitStatusText("Finished applet3.");
            (new OutputWindowOperator()).selectCompilerPage();
            String output = (new OutputWindowOperator()).getText();
            if(output.indexOf("Finished applet3.")==-1){
                fail("Compilation failed. Output is:"+output);
            }
        }catch (Exception e){
            fail("Exception occured while compile applet. Exception is:"+e);
            e.printStackTrace();
        }   
        (new StartDebugAction()).performMenu(); 
        checkDebuggerStoppedOnBreakpoint("debug.applet3", 28);
        MainWindowOperator.getDefault().requestFocus();
        try {
            Thread.sleep(2000);
        } catch(Exception e) {}
        (new ContinueDebugAction()).performShortcut(); 
        checkCorrectAppletOutput("applet3");
        finishDebugger();
    }


    /** 
        Continue debugging via "Continue" button on toolbar.
    */

    public void testContinueDebugToolbar() {
        CommonUtils.checkBreakpointExist("applet4", "debug/applet4", 28, workDir);
        editor = CommonUtils.openFile(workDir, "applet4");
        //(new ToggleBreakpointAction()).performMenu(); 
        (new CompileAction()).perform();
        try{
            MainWindowOperator.getDefault().waitStatusText("Finished applet4.");
            (new OutputWindowOperator()).selectCompilerPage();
            String output = (new OutputWindowOperator()).getText();
            if(output.indexOf("Finished applet4.")==-1){
                fail("Compilation failed. Output is:"+output);
            }
        }catch (Exception e){
            fail("Exception occured while compile applet. Exception is:"+e);
            e.printStackTrace();
        }   
        (new StartDebugAction()).performMenu(); 
        checkDebuggerStoppedOnBreakpoint("debug.applet4", 28);
        (MainWindowOperator.getDefault()).getToolbarButton((MainWindowOperator.getDefault()).getToolbar("Debug"), "Continue").push();
        checkCorrectAppletOutput("applet4");
        finishDebugger();
    }
    

    /** 
        Starting debugger via "Run to cursor" menu item.
    */

    public void testRunToCursorMenu() {
        editor = CommonUtils.openFile(workDir, "applet5");
        editor.setCaretPositionToLine(28);
        //(new ToggleBreakpointAction()).performMenu(); 
        (new CompileAction()).perform();
        try{
            MainWindowOperator.getDefault().waitStatusText("Finished applet5.");
            (new OutputWindowOperator()).selectCompilerPage();
            String output = (new OutputWindowOperator()).getText();
            if(output.indexOf("Finished applet5.")==-1){
                fail("Compilation failed. Output is:"+output);
            }
        }catch (Exception e){
            fail("Exception occured while compile applet. Exception is:"+e);
            e.printStackTrace();
        }   
        (new RunToCursorAction()).performMenu();
        checkDebuggerStoppedOnHiddenBreakpoint("applet5", 28);
        (MainWindowOperator.getDefault()).getToolbarButton((MainWindowOperator.getDefault()).getToolbar("Debug"), "Continue").push();
        checkCorrectAppletOutput("applet5");
        finishDebugger();
    }


    /** 
        Starting debugger via shortcut for "Run to cursor" menu item.
    */

    public void testRunToCursorShortcut() {
        editor = CommonUtils.openFile(workDir, "applet6");
        editor.setCaretPositionToLine(28);
        //(new ToggleBreakpointAction()).performMenu(); 
        (new CompileAction()).perform();
        try{
            MainWindowOperator.getDefault().waitStatusText("Finished applet6.");
            (new OutputWindowOperator()).selectCompilerPage();
            String output = (new OutputWindowOperator()).getText();
            if(output.indexOf("Finished applet6.")==-1){
                fail("Compilation failed. Output is:"+output);
            }
        }catch (Exception e){
            fail("Exception occured while compile applet. Exception is:"+e);
            e.printStackTrace();
        }   
        (new RunToCursorAction()).performShortcut();
        checkDebuggerStoppedOnHiddenBreakpoint("applet6", 28);
        (MainWindowOperator.getDefault()).getToolbarButton((MainWindowOperator.getDefault()).getToolbar("Debug"), "Continue").push();
        checkCorrectAppletOutput("applet6");
        finishDebugger();
    }


    /** 
        Starting debugger via "Run to cursor" toolbar button.
    */

    public void testRunToCursorToolbar() {
        editor = CommonUtils.openFile(workDir, "applet7");
        editor.setCaretPositionToLine(28);
        //(new ToggleBreakpointAction()).performMenu(); 
        (new CompileAction()).perform();
        try{
            MainWindowOperator.getDefault().waitStatusText("Finished applet7.");
            (new OutputWindowOperator()).selectCompilerPage();
            String output = (new OutputWindowOperator()).getText();
            if(output.indexOf("Finished applet7.")==-1){
                fail("Compilation failed. Output is:"+output);
            }
        }catch (Exception e){
            fail("Exception occured while compile applet. Exception is:"+e);
            e.printStackTrace();
        }   
        (new RunToCursorAction()).performMenu();
        checkDebuggerStoppedOnHiddenBreakpoint("applet7", 28);
        (MainWindowOperator.getDefault()).getToolbarButton((MainWindowOperator.getDefault()).getToolbar("Debug"), "Continue").push();
        checkCorrectAppletOutput("applet7");
        finishDebugger();
    }

    /** 
        Starting debugger via "Step Into" menu item.
    */

    public void testStepIntoMenu() {
        editor = CommonUtils.openFile(workDir, "applet8");
        editor.setCaretPositionToLine(28);
        //(new ToggleBreakpointAction()).performMenu(); 
        (new CompileAction()).perform();
        try{
            MainWindowOperator.getDefault().waitStatusText("Finished applet8.");
            (new OutputWindowOperator()).selectCompilerPage();
            String output = (new OutputWindowOperator()).getText();
            if(output.indexOf("Finished applet8.")==-1){
                fail("Compilation failed. Output is:"+output);
            }
        }catch (Exception e){
            fail("Exception occured while compile applet. Exception is:"+e);
            e.printStackTrace();
        }   
        (new StepIntoAction()).performMenu();
        checkDebuggerStoppedInInit("debug.applet8", 16);
        (MainWindowOperator.getDefault()).getToolbarButton((MainWindowOperator.getDefault()).getToolbar("Debug"), "Continue").push();
        checkCorrectAppletOutput("applet8");
        finishDebugger();
    }


    /** 
        Starting debugger via shortcut for "Step Into" menu item.
    */

    public void testStepIntoShortcut() {
        editor = CommonUtils.openFile(workDir, "applet9");
        editor.setCaretPositionToLine(28);
        //(new ToggleBreakpointAction()).performMenu(); 
        (new CompileAction()).perform();
        try{
            MainWindowOperator.getDefault().waitStatusText("Finished applet9.");
            (new OutputWindowOperator()).selectCompilerPage();
            String output = (new OutputWindowOperator()).getText();
            if(output.indexOf("Finished applet9.")==-1){
                fail("Compilation failed. Output is:"+output);
            }
        }catch (Exception e){
            fail("Exception occured while compile applet. Exception is:"+e);
            e.printStackTrace();
        }   
        (new StepIntoAction()).performShortcut();
        checkDebuggerStoppedInInit("debug.applet9", 16);
        (MainWindowOperator.getDefault()).getToolbarButton((MainWindowOperator.getDefault()).getToolbar("Debug"), "Continue").push();
        checkCorrectAppletOutput("applet9");
        finishDebugger();
    }


    /** 
        Starting debugger via "Step Into" toolbar button.
    */

    public void testStepIntoToolbar() {
        editor = CommonUtils.openFile(workDir, "applet10");
        editor.setCaretPositionToLine(28);
        //(new ToggleBreakpointAction()).performMenu(); 
        (new CompileAction()).perform();
        try{
            MainWindowOperator.getDefault().waitStatusText("Finished applet10.");
            (new OutputWindowOperator()).selectCompilerPage();
            String output = (new OutputWindowOperator()).getText();
            if(output.indexOf("Finished applet10.")==-1){
                fail("Compilation failed. Output is:"+output);
            }
        }catch (Exception e){
            fail("Exception occured while compile applet. Exception is:"+e);
            e.printStackTrace();
        }   
        (MainWindowOperator.getDefault()).getToolbarButton((MainWindowOperator.getDefault()).getToolbar("Debug"), "Step Into").push();
        checkDebuggerStoppedInInit("debug.applet10", 16);
        (MainWindowOperator.getDefault()).getToolbarButton((MainWindowOperator.getDefault()).getToolbar("Debug"), "Continue").push();
        checkCorrectAppletOutput("applet10");
        finishDebugger();
    }


    /** 
        Check debugger stopped on all breakpoints
    */

    public void testStopsOnBreakpoint() {
        CommonUtils.checkBreakpointExist("applet1", "debug/applet1", 26, workDir);
        CommonUtils.checkBreakpointExist("applet1", "debug/applet1", 28, workDir);
        CommonUtils.checkBreakpointExist("applet1", "debug/applet1", 30, workDir);
        editor = CommonUtils.openFile(workDir, "applet1");
        editor.setCaretPositionToLine(28);
        //(new ToggleBreakpointAction()).performMenu(); 
        (new CompileAction()).perform();
        /*
        try{
            MainWindowOperator.getDefault().waitStatusText("Finished applet1.");
            (new OutputWindowOperator()).selectCompilerPage();
            String output = (new OutputWindowOperator()).getText();
            if(output.indexOf("Finished applet1.")==-1){
                fail("Compilation failed. Output is:"+output);
            }
        }catch (Exception e){
            fail("Exception occured while compile applet. Exception is:"+e);
            e.printStackTrace();
        } 
        */
        (MainWindowOperator.getDefault()).getToolbarButton((MainWindowOperator.getDefault()).getToolbar("Debug"), "Run in Debugger").push();
        checkDebuggerStoppedOnBreakpoint("debug.applet1", 26);
        (MainWindowOperator.getDefault()).getToolbarButton((MainWindowOperator.getDefault()).getToolbar("Debug"), "Continue").push();
        checkDebuggerStoppedOnBreakpoint("debug.applet1", 28);
        (MainWindowOperator.getDefault()).getToolbarButton((MainWindowOperator.getDefault()).getToolbar("Debug"), "Continue").push();
        checkDebuggerStoppedOnBreakpoint("debug.applet1", 30);
        (MainWindowOperator.getDefault()).getToolbarButton((MainWindowOperator.getDefault()).getToolbar("Debug"), "Continue").push();
        checkCorrectAppletOutput("applet1");
        finishDebugger();
    }

    /** 
        Check debugger stopped on "one method breakpoint"
    */

    public void testStopsOnOneMethodBreakpoint() {
        editor = CommonUtils.openFile(workDir, "applet11");
        editor.setCaretPositionToLine(28);
        //(new ToggleBreakpointAction()).performMenu(); 
        (new AddBreakpointAction()).performMenu(); 
        Utils.fillAddBreakpointMethod(null, null, null, false);
        if(!CommonUtils.isExplorerItemExist("Debugger|Breakpoints|Method "+testWMDir+".applet11.sendOK")){
            fail("Breakpoint do not added");
        }
        editor = CommonUtils.openFile(workDir, "applet11");
        (new CompileAction()).perform();
        try{
            MainWindowOperator.getDefault().waitStatusText("Finished applet11.");
            (new OutputWindowOperator()).selectCompilerPage();
            String output = (new OutputWindowOperator()).getText();
            if(output.indexOf("Finished applet11.")==-1){
                fail("Compilation failed. Output is:"+output);
            }
        }catch (Exception e){
            fail("Exception occured while compile applet. Exception is:"+e);
            e.printStackTrace();
        }   
        (new StartDebugAction()).performMenu(); 
        checkDebuggerStoppedOnMethod("debug.applet11", "sendOK", 25);
        (MainWindowOperator.getDefault()).getToolbarButton((MainWindowOperator.getDefault()).getToolbar("Debug"), "Continue").push();
        checkCorrectAppletOutput("applet11");
        finishDebugger();
    }

    /** 
        Check debugger stopped on "all methods breakpoint"
    */

    public void testStopsOnAllMethodsBreakpoint() {
        editor = CommonUtils.openFile(workDir, "applet12");
        editor.setCaretPositionToLine(28);
        (new AddBreakpointAction()).performMenu(); 
        Utils.fillAddBreakpointMethod(null, null, null, true);
        if(!CommonUtils.isExplorerItemExist("Debugger|Breakpoints|Methods in "+testWMDir+".applet12")){
            fail("Breakpoint do not added");
        }
        editor = CommonUtils.openFile(workDir, "applet12");
        (new CompileAction()).perform();
        try{
            MainWindowOperator.getDefault().waitStatusText("Finished applet12.");
            (new OutputWindowOperator()).selectCompilerPage();
            String output = (new OutputWindowOperator()).getText();
            if(output.indexOf("Finished applet12.")==-1){
                fail("Compilation failed. Output is:"+output);
            }
        }catch (Exception e){
            fail("Exception occured while compile applet. Exception is:"+e);
            e.printStackTrace();
        }   
        (new StartDebugAction()).performMenu(); 
        checkDebuggerStoppedOnMethod("debug.applet12", "", 16);
        (MainWindowOperator.getDefault()).getToolbarButton((MainWindowOperator.getDefault()).getToolbar("Debug"), "Continue").push();
        checkDebuggerStoppedOnMethod("debug.applet12", "initComponents", 54);
        (MainWindowOperator.getDefault()).getToolbarButton((MainWindowOperator.getDefault()).getToolbar("Debug"), "Continue").push();
        checkDebuggerStoppedOnMethod("debug.applet12", "init", 20);
        (MainWindowOperator.getDefault()).getToolbarButton((MainWindowOperator.getDefault()).getToolbar("Debug"), "Continue").push();
        checkDebuggerStoppedOnMethod("debug.applet12", "testMethod", 45);
        (MainWindowOperator.getDefault()).getToolbarButton((MainWindowOperator.getDefault()).getToolbar("Debug"), "Continue").push();
        checkDebuggerStoppedOnMethod("debug.applet12", "sendOK", 26);
        (MainWindowOperator.getDefault()).getToolbarButton((MainWindowOperator.getDefault()).getToolbar("Debug"), "Continue").push();
        checkCorrectAppletOutput("applet12");
        finishDebugger();
    }


    /** 
        Check debugger stopped on "exception caught breakpoint"
    */

    public void testStopsOnExceptionCaughtBreakpoint() {
        editor = CommonUtils.openFile(workDir, "applet13");
        editor.setCaretPositionToLine(25);
        //(new ToggleBreakpointAction()).performMenu(); 
        (new AddBreakpointAction()).performMenu(); 
        Utils.fillAddBreakpointException(null, "ArrayIndexOutOfBoundsException", 0);
        if(!CommonUtils.isExplorerItemExist("Debugger|Breakpoints|Exception java.lang.ArrayIndexOutOfBoundsException caught")){
            fail("Breakpoint do not added");
        }
        editor = CommonUtils.openFile(workDir, "applet13");
        (new CompileAction()).perform();
        checkCompilationSuccessful("applet13");
        (new StartDebugAction()).performMenu(); 
        checkDebuggerStoppedOnExceptionCaught("debug.applet13", "java.lang.ArrayIndexOutOfBoundsException", 26);
        finishDebugger();
    }


    /** 
        Check debugger stopped on "variable access breakpoint"
    */

    public void testStopsOnVariableAccessBreakpoint() {
        editor = CommonUtils.openFile(workDir, "applet14");
        editor.setCaretPositionToLine(20);
        editor.select(20, 9, 9);
        (new AddBreakpointAction()).performMenu(); 
        Utils.fillAddBreakpointVariable(null, null, null, 0);
        if(!CommonUtils.isExplorerItemExist("Debugger|Breakpoints|Variable "+testWMDir+".applet14.i access")){
            fail("Breakpoint do not added");
        }
        editor = CommonUtils.openFile(workDir, "applet14");
        (new CompileAction()).perform();
        checkCompilationSuccessful("applet14");
        (new StartDebugAction()).performMenu(); 
        checkDebuggerStoppedOnVariable("i", "access", "?");
        (MainWindowOperator.getDefault()).getToolbarButton((MainWindowOperator.getDefault()).getToolbar("Debug"), "Continue").push();
        checkDebuggerStoppedOnVariable("i", "access", "1");
        (MainWindowOperator.getDefault()).getToolbarButton((MainWindowOperator.getDefault()).getToolbar("Debug"), "Continue").push();
        checkCorrectAppletOutput("applet14");
        finishDebugger();
    }

    /** 
        Check debugger stopped on "variable acccess" & "variable modification" breakpoints
    */
     
    public void testStopsOnVariableBreakpoints() {
        editor = CommonUtils.openFile(workDir, "applet14");
        editor.setCaretPositionToLine(20);
        editor.select(20, 9, 9);
        (new AddBreakpointAction()).performMenu(); 
        Utils.fillAddBreakpointVariable(null, null, null, 1);
        if(!CommonUtils.isExplorerItemExist("Debugger|Breakpoints|Variable "+testWMDir+".applet14.i modification")){
            fail("Breakpoint do not added");
        }
        if(!CommonUtils.isExplorerItemExist("Debugger|Breakpoints|Variable "+testWMDir+".applet14.i access")){
            editor = CommonUtils.openFile(workDir, "applet14");
            editor.setCaretPositionToLine(20);
            editor.select(20, 9, 9);
            (new AddBreakpointAction()).performMenu(); 
            Utils.fillAddBreakpointVariable(null, null, null, 0);
        }
        editor = CommonUtils.openFile(workDir, "applet14");
        (new CompileAction()).perform();
        checkCompilationSuccessful("applet14");
        (new StartDebugAction()).performMenu(); 
        checkDebuggerStoppedOnVariable("i", "modification", "?");
        (MainWindowOperator.getDefault()).getToolbarButton((MainWindowOperator.getDefault()).getToolbar("Debug"), "Continue").push();
        checkDebuggerStoppedOnVariable("i", "access", "0");
        (MainWindowOperator.getDefault()).getToolbarButton((MainWindowOperator.getDefault()).getToolbar("Debug"), "Continue").push();
        checkDebuggerStoppedOnVariable("i", "modification", "0");
        (MainWindowOperator.getDefault()).getToolbarButton((MainWindowOperator.getDefault()).getToolbar("Debug"), "Continue").push();
        checkDebuggerStoppedOnVariable("i", "access", "1");
        (MainWindowOperator.getDefault()).getToolbarButton((MainWindowOperator.getDefault()).getToolbar("Debug"), "Continue").push();
        checkCorrectAppletOutput("applet14");
        finishDebugger();
    }


    /** 
        Check debugger stopped on "variable modification breakpoint"
    */

    public void testStopsOnVariableModificationBreakpoint() {
        editor = CommonUtils.openFile(workDir, "applet15");
        editor.setCaretPositionToLine(20);
        editor.select(20, 9, 9);
        (new AddBreakpointAction()).performMenu(); 
        Utils.fillAddBreakpointVariable(null, null, null, -1);
        if(!CommonUtils.isExplorerItemExist("Debugger|Breakpoints|Variable "+testWMDir+".applet15.i modification")){
            fail("Breakpoint do not added");
        }
        editor = CommonUtils.openFile(workDir, "applet15");
        (new CompileAction()).perform();
        checkCompilationSuccessful("applet15");
        (new StartDebugAction()).performMenu(); 
        checkDebuggerStoppedOnVariable("i", "modification", "?");
        (MainWindowOperator.getDefault()).getToolbarButton((MainWindowOperator.getDefault()).getToolbar("Debug"), "Continue").push();
        checkDebuggerStoppedOnVariable("i", "modification", "0");
        (new ContinueDebugAction()).performMenu(); 
        checkDebuggerStoppedOnVariable("i", "modification", "1");
        (MainWindowOperator.getDefault()).getToolbarButton((MainWindowOperator.getDefault()).getToolbar("Debug"), "Continue").push();
        checkCorrectAppletOutput("applet15");
        finishDebugger();
    }


    /** 
        Check debugger stopped on "thread start breakpoint"
    */

    public void testStopsOnThreadStartBreakpoint() {
        editor = CommonUtils.openFile(workDir, "applet16");
        editor.setCaretPositionToLine(20);
        (new AddBreakpointAction()).performMenu(); 
        Utils.fillAddBreakpointThread(0);
        if(!CommonUtils.isExplorerItemExist("Debugger|Breakpoints|Thread start")){
            fail("Breakpoint do not added");
        }
        editor = CommonUtils.openFile(workDir, "applet16");
        (new CompileAction()).perform();
        checkCompilationSuccessful("applet16");
        (new StartDebugAction()).performMenu(); 
        for(int i = 0; i<13; i++){
            checkDebuggerStoppedOnThread("started.");
            try{
                (new ContinueDebugAction()).performMenu(); 
            }catch(org.netbeans.jemmy.TimeoutExpiredException e){
                e.printStackTrace();
                System.out.println("Can't find Continue button in menu.");
                break;
            }
        }
        //Applet do not initialized correctly!!!
        //checkCorrectAppletOutput("applet16");
        finishDebugger();
    }


    /** 
        Check debugger stopped on "thread start & death breakpoints"
    */

    public void testStopsOnThreadBreakpoint() {
        editor = CommonUtils.openFile(workDir, "applet16");
        editor.setCaretPositionToLine(20);
        (new AddBreakpointAction()).performMenu(); 
        Utils.fillAddBreakpointThread(1);
        if(!CommonUtils.isExplorerItemExist("Debugger|Breakpoints|Thread death")){
            fail("Breakpoint do not added");
        }
        if(!CommonUtils.isExplorerItemExist("Debugger|Breakpoints|Thread start")){
            editor = CommonUtils.openFile(workDir, "applet16");
            editor.setCaretPositionToLine(20);
            (new AddBreakpointAction()).performMenu(); 
            Utils.fillAddBreakpointThread(0);
        }
        editor = CommonUtils.openFile(workDir, "applet16");
        (new CompileAction()).perform();
        //checkCompilationSuccessful("applet16");
        (new StartDebugAction()).performMenu(); 
        for(int i = 0; i<18; i++){
            checkDebuggerStoppedOnThread(".");
            try{
                (new ContinueDebugAction()).performMenu(); 
            }catch(org.netbeans.jemmy.TimeoutExpiredException e){
                e.printStackTrace();
                System.out.println("Can't find Continue button in menu.");
                break;
            }
        }
        //Applet do not initialized correctly!!!
        //checkCorrectAppletOutput("applet16");
        finishDebugger();
    }


    /** 
        Check debugger stopped on "thread death breakpoints"
    */

    public void testStopsOnThreadStartOrDeathBreakpoint() {
        editor = CommonUtils.openFile(workDir, "applet17");
        Utils.deleteAllBreakpoints();
        editor = CommonUtils.openFile(workDir, "applet17");
        editor.setCaretPositionToLine(20);
        (new AddBreakpointAction()).performMenu(); 
        Utils.fillAddBreakpointThread(2);
        if(!CommonUtils.isExplorerItemExist("Debugger|Breakpoints|Thread start / death")){
            fail("Breakpoint do not added");
        }
        editor = CommonUtils.openFile(workDir, "applet17");
        (new CompileAction()).perform();
        checkCompilationSuccessful("applet17");
        (new StartDebugAction()).performMenu(); 
        for(int i = 0; i<18; i++){
            checkDebuggerStoppedOnThread(".");
            try{
                (new ContinueDebugAction()).performMenu(); 
            }catch(org.netbeans.jemmy.TimeoutExpiredException e){
                e.printStackTrace();
                System.out.println("Can't find Continue button in menu.");
                break;
            }
        }
        //checkCorrectAppletOutput("applet17");
        finishDebugger();
    }


    /** 
        Check debugger stopped on "class prepare breakpoint"
    */

    public void testStopsOnClassPrepareBreakpoint() {
        editor = CommonUtils.openFile(workDir, "applet17");
        Utils.deleteAllBreakpoints();
        editor = CommonUtils.openFile(workDir, "applet17");
        editor.setCaretPositionToLine(20);
        (new AddBreakpointAction()).performMenu(); 
        Utils.fillAddBreakpointClass(null, null, 0);
        if(!CommonUtils.isExplorerItemExist("Debugger|Breakpoints|Class "+testWMDir+".applet17 prepare")){
            fail("Breakpoint do not added");
        }
        editor = CommonUtils.openFile(workDir, "applet17");
        (new CompileAction()).perform();
        checkCompilationSuccessful("applet17");
        (new StartDebugAction()).performMenu(); 
        checkDebuggerStoppedOnClass("debug.applet17", "prepared");
        (new ContinueDebugAction()).performMenu(); 
        checkCorrectAppletOutput("applet17");
        finishDebugger();
    }


    /** 
        Check debugger stopped on "class unload breakpoint"
    */

    public void testStopsOnClassUnloadBreakpoint() {
        editor = CommonUtils.openFile(workDir, "applet17");
        Utils.deleteAllBreakpoints();
        editor = CommonUtils.openFile(workDir, "applet17");
        editor.setCaretPositionToLine(20);
        (new AddBreakpointAction()).performMenu(); 
        Utils.fillAddBreakpointClass(null, null, 1);
        if(!CommonUtils.isExplorerItemExist("Debugger|Breakpoints|Class "+testWMDir+".applet17 unload")){
            fail("Breakpoint do not added");
        }
        editor = CommonUtils.openFile(workDir, "applet17");
        (new CompileAction()).perform();
        checkCompilationSuccessful("applet17");
        (new StartDebugAction()).performMenu(); 
        checkCorrectAppletOutput("applet17");
        checkDebuggerStoppedOnClass("debug.applet17", "unload");
        //(new ContinueDebugAction()).performMenu(); 
        finishDebugger();
    }

    private void checkCompilationSuccessful(String appletName){
        String res = CompilationUtils.checkResultOfAppletCompilation(workDir, appletName);
        if(res!=null){
            System.out.println("Compilation isn't successful and result is:"+res);
            finishDebugger();
            fail("Compilation of file "+appletName+" isn't successful. The reason is: "+res);
        }
    }

    private void checkCorrectAppletOutput(String appletName) {
        AppletResponseWaitable arw = new AppletResponseWaitable(appletName, "", 1234);
        Waiter w = new Waiter(arw);
        try {
            w.waitAction(arw);
        } catch (InterruptedException e) {
            e.printStackTrace();
            finishDebugger();
            fail("Exception while waiting for response from Applet:" + e + ". Real ID:" + arw.getId());
        } catch (TimeoutExpiredException e1) {
            e1.printStackTrace();
            finishDebugger();
            fail("Timeout while waiting for response from Applet: " + appletName + ". Real ID:" + arw.getId());
        }
    }

    private void checkDebuggerStoppedOnClass(String className, String action) {
        String result = CommonUtils.waitDebuggerStoppedOnClass(className, action);
        if(result!=null){
            System.out.println("Error while waiting of debugger stop: "+result);
            finishDebugger();
            fail("Debugger do not stopped on class "+action+" for applet "+className);
        }
    }

    private void checkDebuggerStoppedOnThread(String start) {
        String result = CommonUtils.waitDebuggerStoppedOnThread(start);
        if(result!=null){
            System.out.println("Error while waiting of debugger stop: "+result);
            finishDebugger();
            fail("Debugger do not stopped on thread "+start);
        }
    }

    private void checkDebuggerStoppedOnVariable(String variableName, String accessName, String number) {
        String result = CommonUtils.waitDebuggerStoppedOnVariable(variableName, accessName, number);
        if(result!=null){
            System.out.println("Error while waiting of debugger stop: "+result);
            finishDebugger();
            fail("Debugger do not stopped on "+accessName+" for variable "+variableName);
        }
    }

    private void checkDebuggerStoppedOnExceptionCaught(String name, String exceptionName, int line) {
        String result = CommonUtils.waitDebuggerStoppedOnExceptionCaught(name, exceptionName, line);
        if(result!=null){
            System.out.println("Error while waiting of debugger stop: "+result);
            finishDebugger();
            fail("Debugger do not stopped on "+exceptionName+" in file "+name);
        }
    }

    private void checkDebuggerStoppedOnMethod(String name, String methodName, int line) {
        String result = CommonUtils.waitDebuggerStoppedOnMethod(name, methodName, line);
        if(result!=null){
            System.out.println("Error while waiting of debugger stop: "+result);
            finishDebugger();
            fail("Debugger do not stopped on "+methodName+" in file "+name);
        }
    }

    private void checkDebuggerStoppedOnBreakpoint(String name, int line) {
        String result = CommonUtils.waitDebuggerStoppedOnBreakpoint(name, line);
        if(result!=null){
            System.out.println("Error while waiting of debugger stop: "+result);
            finishDebugger();
            fail("Debugger do not stopped on "+line+" in file "+name);
        }
    }

    private void checkDebuggerStoppedOnHiddenBreakpoint(String name, int line) {
        String result = CommonUtils.waitDebuggerStoppedOnHiddenBreakpoint(name, line);
        if(result!=null){
            //String s = NbTopManager.get().getStatusText();
            System.out.println("Error while waiting of debugger stop: "+result);
            finishDebugger();
            fail("Debugger do not stopped on "+line+" in file "+name);
        }
    }

    private void checkDebuggerStoppedInInit(String name, int line) {
        String result = CommonUtils.waitDebuggerStoppedInInit(name, line);
        if(result!=null){
            //String s = NbTopManager.get().getStatusText();
            System.out.println("Error while waiting of debugger stop: "+result);
            finishDebugger();
            fail("Debugger do not stopped on "+line+" in file "+name);
        }
    }


    private void finishDebugger(){
        try{
            Utils.finishDebugger();
        } catch(org.netbeans.jemmy.TimeoutExpiredException timeEx) {
            System.out.println("Catched TimeoutExpiredException when trying to finish debugger. May be correct???");
             timeEx.printStackTrace();
        } 
    }



} 





... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.