001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041:
042: package gui.menu;
043:
044: import org.netbeans.performance.test.guitracker.ActionTracker;
045:
046: import java.awt.event.KeyEvent;
047:
048: import org.netbeans.jellytools.EditorOperator;
049: import org.netbeans.jellytools.actions.EditAction;
050: import org.netbeans.jellytools.actions.OpenAction;
051: import org.netbeans.jellytools.nodes.Node;
052: import org.netbeans.jellytools.nodes.SourcePackagesNode;
053:
054: import org.netbeans.jemmy.operators.ComponentOperator;
055: import org.netbeans.jemmy.operators.JPopupMenuOperator;
056:
057: import org.netbeans.junit.NbTestSuite;
058:
059: /**
060: * Test of popup menu on Source Editor pane.
061: *
062: * @author mmirilovic@netbeans.org
063: */
064: public class SourceEditorPopupMenu extends
065: org.netbeans.performance.test.utilities.PerformanceTestCase {
066:
067: private static String stringToInvokePopup;
068: private static boolean setCaretPositionAfterString;
069: private static EditorOperator editor;
070: private static String fileName;
071:
072: /** Creates a new instance of SourceEditorPopupMenu */
073: public SourceEditorPopupMenu(String testName) {
074: super (testName);
075: expectedTime = UI_RESPONSE;
076: WAIT_AFTER_OPEN = 100;
077: track_mouse_event = ActionTracker.TRACK_MOUSE_PRESS;
078: }
079:
080: /** Creates a new instance of SourceEditorPopupMenu */
081: public SourceEditorPopupMenu(String testName,
082: String performanceDataName) {
083: super (testName, performanceDataName);
084: expectedTime = UI_RESPONSE;
085: WAIT_AFTER_OPEN = 100;
086: track_mouse_event = ActionTracker.TRACK_MOUSE_PRESS;
087: }
088:
089: public static NbTestSuite suite() {
090: NbTestSuite suite = new NbTestSuite();
091: suite.addTest(new SourceEditorPopupMenu("testPopupInTxt"));
092: suite.addTest(new SourceEditorPopupMenu("testPopupInXml"));
093: suite.addTest(new SourceEditorPopupMenu("testPopupOnMethod"));
094: suite
095: .addTest(new SourceEditorPopupMenu(
096: "testPopupOnClassName"));
097: return suite;
098: }
099:
100: public void testPopupInTxt() {
101: fileName = "textfile.txt";
102: stringToInvokePopup = "***********";
103: setCaretPositionAfterString = false;
104:
105: doMeasurement();
106: }
107:
108: public void testPopupInXml() {
109: fileName = "xmlfile.xml";
110: stringToInvokePopup = "<root";
111: setCaretPositionAfterString = false;
112:
113: doMeasurement();
114: }
115:
116: public void testPopupOnMethod() {
117: fileName = "Main.java";
118: stringToInvokePopup = "javax.swing.JPa";
119: setCaretPositionAfterString = false;
120:
121: doMeasurement();
122: }
123:
124: public void testPopupOnClassName() {
125: fileName = "Main.java";
126: stringToInvokePopup = "class Mai";
127: setCaretPositionAfterString = false;
128:
129: doMeasurement();
130: }
131:
132: public void initialize() {
133: Node fileNode = new Node(new SourcePackagesNode(
134: "PerformanceTestData"),
135: "org.netbeans.test.performance|" + fileName);
136:
137: if (fileName.endsWith("xml")) {
138: new EditAction().performAPI(fileNode);
139: } else {
140: new OpenAction().performAPI(fileNode);
141: }
142: editor = new EditorOperator(fileName);
143: waitNoEvent(2000); // annotations, folds, toolbars, ...
144: }
145:
146: public void prepare() {
147: editor.setCaretPosition(stringToInvokePopup,
148: setCaretPositionAfterString);
149: }
150:
151: public ComponentOperator open() {
152: editor.pushKey(KeyEvent.VK_F10, KeyEvent.SHIFT_MASK);
153: return new JPopupMenuOperator();
154: }
155:
156: public void shutdown() {
157: editor.closeDiscardAll();
158: }
159:
160: }
|