KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > java_editor_actions > JavaNavigationActionsTest


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  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20 package java_editor_actions;
21
22 import java.awt.event.KeyEvent JavaDoc;
23 import javax.swing.KeyStroke JavaDoc;
24 import org.netbeans.jellytools.EditorOperator;
25 import org.netbeans.jemmy.operators.JEditorPaneOperator;
26 import editor_actions.EditorActionsTest;
27
28 /**
29  * Basic Navigation Actions Test class.
30  * The base navigation actions can be found at:
31  * http://editor.netbeans.org/doc/UserView/apdx_a_nshortcuts.html
32  *
33  * Test covers following actions:
34  *
35  * StandardNavigationActions:
36  * -------------------------
37  * caret-forward [RIGHT]
38  * caret-backward [LEFT]
39  * caret-down [DOWN]
40  * caret-up [UP]
41  * selection-forward [SHIFT-RIGHT]
42  * selection-backward [SHIFT-LEFT]
43  * selection-down [SHIFT-DOWN]
44  * selection-up [SHIFT-UP]
45  * caret-next-word [CTRL-RIGHT]
46  * caret-previous-word [CTRL-LEFT]
47  * selection-next-word [CTRL-SHIFT-RIGHT]
48  * selection-previous-word [CTRL-SHIFT-LEFT]
49  * page-down [PAGE_DOWN]
50  * page-up [PAGE_UP]
51  * selection-page-down [SHIFT-PAGE_DOWN]
52  * selection-page-up [SHIFT-PAGE_UP]
53  * caret-begin-line [HOME]
54  * caret-end-line [END]
55  * selection-begin-line [SHIFT-HOME]
56  * selection-end-line [SHIFT-END]
57  * caret-begin [CTRL-HOME]
58  * caret-end [CTRL-END]
59  * selection-begin [CTRL-SHIFT-HOME]
60  * selection-end [CTRL-SHIFT-END]
61  * caret-end-word [ALT-U E]
62  *
63  * @author Martin Roskanin
64  */

65   public class JavaNavigationActionsTest extends JavaEditorActionsTest {
66
67     private JEditorPaneOperator txtOper;
68     private EditorOperator editor;
69       
70     /** Creates a new instance of Main */
71     public JavaNavigationActionsTest(String JavaDoc testMethodName) {
72         super(testMethodName);
73     }
74     
75     
76     private ValueResolver getResolver(final JEditorPaneOperator txtOper, final int etalon){
77         ValueResolver resolver = new ValueResolver(){
78             public Object JavaDoc getValue(){
79                 int newCaretPos = txtOper.getCaretPosition();
80                 return (newCaretPos == etalon) ? Boolean.TRUE : Boolean.FALSE;
81             }
82         };
83         
84         return resolver;
85     }
86     
87     
88     private void checkActionByKeyStroke(int key, int mod, int caretPosToSet, int etalon, boolean checkSelection){
89         editor.setCaretPosition(caretPosToSet);
90         txtOper.pushKey(key,mod);
91         waitMaxMilisForValue(1500, getResolver(txtOper, etalon), Boolean.TRUE);
92         int newCaretOffset = txtOper.getCaretPosition();
93         if (checkSelection){
94             int selectionStart = txtOper.getSelectionStart();
95             int selectionEnd = txtOper.getSelectionEnd();
96             if (selectionStart != Math.min(caretPosToSet, etalon) ||
97                     selectionEnd != Math.max(caretPosToSet, etalon)){
98                 String JavaDoc keyString = KeyStroke.getKeyStroke(key, mod).toString();
99                 fail(keyString+": Action failed: [etalon/newCaretOffset/selectionStart/selectionEnd]: ["+etalon+"/"+
100                         newCaretOffset+"/"+selectionStart+"/"+selectionEnd+"]");
101             }
102         }else{
103             if (etalon != newCaretOffset){
104                 String JavaDoc keyString = KeyStroke.getKeyStroke(key, mod).toString();
105                 fail(keyString+": Action failed: [etalon/newCaretOffset]: ["+etalon+"/"+
106                         newCaretOffset+"]");
107             }
108         }
109     }
110     
111     public void testStandardNavigationActions(){
112         openDefaultProject();
113         openDefaultSampleFile();
114         try {
115         
116             editor = getDefaultSampleEditorOperator();
117             txtOper = editor.txtEditorPane();
118
119             // -------- test RIGHT action ---
120
checkActionByKeyStroke(KeyEvent.VK_RIGHT, 0, 20, 21, false);
121
122             // -------- test LEFT action ---
123
checkActionByKeyStroke(KeyEvent.VK_LEFT, 0, 20, 19, false);
124             
125
126             // -------- test DOWN action ---
127
// set caret at 10,14
128
checkActionByKeyStroke(KeyEvent.VK_DOWN, 0, 200, 231, false);
129
130             // -------- test UP action ---
131
// set caret at 10,14
132
checkActionByKeyStroke(KeyEvent.VK_UP, 0, 200, 170, false);
133
134             // -------- test select RIGHT action ---
135
checkActionByKeyStroke(KeyEvent.VK_RIGHT, KeyEvent.SHIFT_DOWN_MASK, 20, 21, true);
136
137             // -------- test select LEFT action ---
138
checkActionByKeyStroke(KeyEvent.VK_LEFT, KeyEvent.SHIFT_DOWN_MASK, 20, 19, true);
139             
140             // -------- test select DOWN action ---
141
// set caret at 10,14
142
checkActionByKeyStroke(KeyEvent.VK_DOWN, KeyEvent.SHIFT_DOWN_MASK, 200, 231, true);
143
144             // -------- test select UP action ---
145
// set caret at 10,14
146
checkActionByKeyStroke(KeyEvent.VK_UP, KeyEvent.SHIFT_DOWN_MASK, 200, 170, true);
147
148             // -------- test caret-next-word action ---
149
// set caret at 1,12
150
checkActionByKeyStroke(KeyEvent.VK_RIGHT, KeyEvent.CTRL_DOWN_MASK, 11, 22, false);
151             
152             // -------- test caret-previous-word action -----
153
checkActionByKeyStroke(KeyEvent.VK_LEFT, KeyEvent.CTRL_DOWN_MASK, 34, 23, false);
154             
155             // -------- test selection-next-word action ---
156
// set caret at 1,12
157
checkActionByKeyStroke(KeyEvent.VK_RIGHT, KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK, 11, 22, true);
158             
159             // -------- test selection-previous-word action -----
160
checkActionByKeyStroke(KeyEvent.VK_LEFT, KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK, 34, 23, true);
161
162             // -------- test page-down action -------
163
editor.setCaretPosition(5,1);
164             int caretDown = txtOper.getCaretPosition();
165             editor.setCaretPosition(1,1);
166             int pageDownStart = txtOper.getCaretPosition();
167             txtOper.pushKey(KeyEvent.VK_PAGE_DOWN);
168             int pageDownEnd = txtOper.getCaretPosition();
169             if (pageDownEnd < caretDown){
170                 fail("PAGE_DOWN failed");
171             }
172             
173             
174             // -------- test page-up action -------
175
editor.setCaretPosition(32,1);
176             int caretUp = txtOper.getCaretPosition();
177             editor.setCaretPosition(38,1);
178             int pageUpStart = txtOper.getCaretPosition();
179             txtOper.pushKey(KeyEvent.VK_PAGE_UP);
180             int pageUpEnd = txtOper.getCaretPosition();
181             if (pageUpEnd > caretUp){
182                 fail("PAGE_UP failed");
183             }
184             
185             // -------- test page-down action -------
186
checkActionByKeyStroke(KeyEvent.VK_PAGE_DOWN, KeyEvent.SHIFT_DOWN_MASK, pageDownStart, pageDownEnd, true);
187             
188             // -------- test page-up action -------
189
checkActionByKeyStroke(KeyEvent.VK_PAGE_UP, KeyEvent.SHIFT_DOWN_MASK, pageUpStart, pageUpEnd, true);
190             
191             // -------- test caret-begin-line action -------
192
checkActionByKeyStroke(KeyEvent.VK_HOME, 0, 18, 0, false);
193             
194             // -------- test caret-end-line action -------
195
checkActionByKeyStroke(KeyEvent.VK_END, 0, 18, 45, false);
196             
197             // -------- test selection-begin-line action -------
198
checkActionByKeyStroke(KeyEvent.VK_HOME, KeyEvent.SHIFT_DOWN_MASK, 18, 0, true);
199             
200             // -------- test selection-end-line action -------
201
checkActionByKeyStroke(KeyEvent.VK_END, KeyEvent.SHIFT_DOWN_MASK, 18, 45, true);
202
203             // -------- test caret-begin action -------
204
checkActionByKeyStroke(KeyEvent.VK_HOME, KeyEvent.CTRL_DOWN_MASK, 18, 0, false);
205
206             // -------- test caret-end action -------
207
checkActionByKeyStroke(KeyEvent.VK_END, KeyEvent.CTRL_DOWN_MASK, 18, txtOper.getDocument().getLength(), false);
208             
209             // -------- test selection-begin action -------
210
checkActionByKeyStroke(KeyEvent.VK_HOME, KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK, 18, 0, true);
211
212             // -------- test selection-end action -------
213
checkActionByKeyStroke(KeyEvent.VK_END, KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK, 18, txtOper.getDocument().getLength(), true);
214
215             // ---- caret-end-word ----
216
// testStandar|dNavigationActions
217
editor.setCaretPosition(71);
218             int etalon = 89; // testStandardNavigationActions|
219
txtOper.pushKey(KeyEvent.VK_U, KeyEvent.ALT_DOWN_MASK);
220             txtOper.pushKey(KeyEvent.VK_E);
221             waitMaxMilisForValue(1500, getResolver(txtOper, etalon), Boolean.TRUE);
222             int newCaretOffset = txtOper.getCaretPosition();
223             if (etalon != newCaretOffset){
224                 fail("Alt+U E: Action failed: [etalon/newCaretOffset]: ["+etalon+"/"+
225                         newCaretOffset+"]");
226             }
227
228
229             
230         } finally {
231             closeFileWithDiscard();
232         }
233             
234     }
235     
236     
237 }
238
Popular Tags