1 19 20 package java_code_folding; 21 22 import java.awt.event.KeyEvent ; 23 import java.io.File ; 24 import java.io.FileOutputStream ; 25 import java.io.IOException ; 26 import java.io.OutputStream ; 27 import java.io.PrintStream ; 28 import java.util.Hashtable ; 29 import javax.swing.KeyStroke ; 30 import javax.swing.text.AbstractDocument ; 31 import javax.swing.text.JTextComponent ; 32 import org.netbeans.jellytools.Bundle; 33 import org.netbeans.jellytools.EditorOperator; 34 import org.netbeans.jellytools.EditorWindowOperator; 35 import lib.EditorTestCase; 36 import code_folding.CodeFoldingTest; 37 import org.netbeans.api.editor.fold.Fold; 38 import org.netbeans.api.editor.fold.FoldHierarchy; 39 import org.netbeans.jemmy.operators.JEditorPaneOperator; 40 import org.netbeans.jemmy.operators.JTextComponentOperator; 41 42 68 public class JavaFoldsNavigationTest extends JavaCodeFoldingTest { 69 70 private JEditorPaneOperator txtOper; 71 private EditorOperator editor; 72 73 74 public JavaFoldsNavigationTest(String testMethodName) { 75 super(testMethodName); 76 } 77 78 private ValueResolver getResolver(final JEditorPaneOperator txtOper, final int etalon){ 79 ValueResolver resolver = new ValueResolver(){ 80 public Object getValue(){ 81 int newCaretPos = txtOper.getCaretPosition(); 82 return (newCaretPos == etalon) ? Boolean.TRUE : Boolean.FALSE; 83 } 84 }; 85 86 return resolver; 87 } 88 89 private void checkActionByKeyStroke(int key, int mod, int caretPosToSet, int etalon, boolean checkSelection){ 90 if (caretPosToSet == -1){ 91 caretPosToSet = txtOper.getCaretPosition(); 92 }else{ 93 editor.setCaretPosition(caretPosToSet); 94 txtOper.getCaret().setMagicCaretPosition(null); 95 } 96 txtOper.pushKey(key,mod); 97 waitMaxMilisForValue(3500, getResolver(txtOper, etalon), Boolean.TRUE); 98 int newCaretOffset = txtOper.getCaretPosition(); 99 if (checkSelection){ 100 int selectionStart = txtOper.getSelectionStart(); 101 int selectionEnd = txtOper.getSelectionEnd(); 102 if (selectionStart != Math.min(caretPosToSet, etalon) || 103 selectionEnd != Math.max(caretPosToSet, etalon)){ 104 String keyString = KeyStroke.getKeyStroke(key, mod).toString(); 105 fail(keyString+": Action failed: [etalon/newCaretOffset/selectionStart/selectionEnd]: ["+etalon+"/"+ 106 newCaretOffset+"/"+selectionStart+"/"+selectionEnd+"]"); 107 } 108 }else{ 109 if (etalon != newCaretOffset){ 110 String keyString = KeyStroke.getKeyStroke(key, mod).toString(); 111 fail(keyString+": Action failed: [etalon/newCaretOffset]: ["+etalon+"/"+ 112 newCaretOffset+"]"); 113 } 114 } 115 } 116 117 public void testJavaFoldsNavigation(){ 118 openDefaultProject(); 119 openDefaultSampleFile(); 120 try { 121 editor = getDefaultSampleEditorOperator(); 122 JTextComponentOperator txtCompOper = new JTextComponentOperator(editor); 123 JTextComponent target = (JTextComponent )txtCompOper.getSource(); 124 txtOper = editor.txtEditorPane(); 125 126 waitForFolding(target, 6000); 128 129 collapseFoldAtCaretPosition(editor, 4, 4); 133 checkActionByKeyStroke(KeyEvent.VK_LEFT, 0, 70, 0, false); 135 136 checkActionByKeyStroke(KeyEvent.VK_LEFT, KeyEvent.SHIFT_DOWN_MASK, 70, 0, true); 138 139 checkActionByKeyStroke(KeyEvent.VK_RIGHT, 0, 0, 70, false); 141 142 checkActionByKeyStroke(KeyEvent.VK_RIGHT, KeyEvent.SHIFT_DOWN_MASK, 0, 70, true); 144 145 checkActionByKeyStroke(KeyEvent.VK_HOME, 0, 70, 0, false); 147 148 checkActionByKeyStroke(KeyEvent.VK_HOME, KeyEvent.SHIFT_DOWN_MASK, 70, 0, true); 150 151 checkActionByKeyStroke(KeyEvent.VK_END, 0, 0, 70, false); 153 154 checkActionByKeyStroke(KeyEvent.VK_END, KeyEvent.SHIFT_DOWN_MASK, 0, 70, true); 156 157 checkActionByKeyStroke(KeyEvent.VK_UP, 0, 71, 0, false); 159 160 checkActionByKeyStroke(KeyEvent.VK_UP, KeyEvent.SHIFT_DOWN_MASK, 71, 0, true); 162 163 checkActionByKeyStroke(KeyEvent.VK_DOWN, 0, 0, 71, false); 165 166 checkActionByKeyStroke(KeyEvent.VK_DOWN, KeyEvent.SHIFT_DOWN_MASK, 0, 71, true); 168 169 checkActionByKeyStroke(KeyEvent.VK_UP, 0, 78, 70, false); 172 173 checkActionByKeyStroke(KeyEvent.VK_UP, KeyEvent.SHIFT_DOWN_MASK, 78, 70, true); 175 176 checkActionByKeyStroke(KeyEvent.VK_DOWN, 0, 70, 78, false); 178 179 checkActionByKeyStroke(KeyEvent.VK_DOWN, KeyEvent.SHIFT_DOWN_MASK, 70, 78, true); 181 182 checkActionByKeyStroke(KeyEvent.VK_UP, 0, 80, 70, false); 184 checkActionByKeyStroke(KeyEvent.VK_DOWN, 0, -1, 80, false); 185 186 187 189 190 collapseFoldAtCaretPosition(editor, 25, 13); 193 194 checkActionByKeyStroke(KeyEvent.VK_LEFT, 0, 454, 414, false); 196 197 checkActionByKeyStroke(KeyEvent.VK_LEFT, KeyEvent.SHIFT_DOWN_MASK, 454, 414, true); 199 200 checkActionByKeyStroke(KeyEvent.VK_RIGHT, 0, 414, 454, false); 202 203 checkActionByKeyStroke(KeyEvent.VK_RIGHT, KeyEvent.SHIFT_DOWN_MASK, 414, 454, true); 205 206 checkActionByKeyStroke(KeyEvent.VK_HOME, 0, 454, 414, false); 208 209 checkActionByKeyStroke(KeyEvent.VK_HOME, KeyEvent.SHIFT_DOWN_MASK, 454, 414, true); 211 212 checkActionByKeyStroke(KeyEvent.VK_END, 0, 414, 454, false); 214 215 checkActionByKeyStroke(KeyEvent.VK_END, KeyEvent.SHIFT_DOWN_MASK, 414, 454, true); 217 218 checkActionByKeyStroke(KeyEvent.VK_UP, 0, 459, 414, false); 220 221 checkActionByKeyStroke(KeyEvent.VK_UP, KeyEvent.SHIFT_DOWN_MASK, 459, 414, true); 223 224 checkActionByKeyStroke(KeyEvent.VK_DOWN, 0, 414, 459, false); 226 227 checkActionByKeyStroke(KeyEvent.VK_DOWN, KeyEvent.SHIFT_DOWN_MASK, 414, 459, true); 229 230 checkActionByKeyStroke(KeyEvent.VK_UP, 0, 467, 454, false); 233 234 checkActionByKeyStroke(KeyEvent.VK_UP, KeyEvent.SHIFT_DOWN_MASK, 467, 454, true); 236 237 checkActionByKeyStroke(KeyEvent.VK_DOWN, 0, 454, 467, false); 239 240 checkActionByKeyStroke(KeyEvent.VK_DOWN, KeyEvent.SHIFT_DOWN_MASK, 454, 467, true); 242 243 checkActionByKeyStroke(KeyEvent.VK_UP, 0, 469, 454, false); 245 checkActionByKeyStroke(KeyEvent.VK_DOWN, 0, -1, 469, false); 246 247 250 collapseFoldAtCaretPosition(editor, 36, 84); 252 checkActionByKeyStroke(KeyEvent.VK_LEFT, 0, 898, 896, false); 254 255 checkActionByKeyStroke(KeyEvent.VK_LEFT, KeyEvent.SHIFT_DOWN_MASK, 898, 896, true); 257 258 checkActionByKeyStroke(KeyEvent.VK_RIGHT, 0, 896, 898, false); 260 261 checkActionByKeyStroke(KeyEvent.VK_RIGHT, KeyEvent.SHIFT_DOWN_MASK, 896, 898, true); 263 264 checkActionByKeyStroke(KeyEvent.VK_HOME, 0, 898, 818, false); 266 267 checkActionByKeyStroke(KeyEvent.VK_HOME, KeyEvent.SHIFT_DOWN_MASK, 898, 818, true); 269 270 checkActionByKeyStroke(KeyEvent.VK_END, 0, 896, 926, false); 272 273 checkActionByKeyStroke(KeyEvent.VK_END, KeyEvent.SHIFT_DOWN_MASK, 896, 926, true); 275 276 checkActionByKeyStroke(KeyEvent.VK_UP, 0, 1010, 896, false); 278 279 checkActionByKeyStroke(KeyEvent.VK_UP, KeyEvent.SHIFT_DOWN_MASK, 1010, 896, true); 281 282 checkActionByKeyStroke(KeyEvent.VK_DOWN, 0, 896, 1009, false); 284 285 checkActionByKeyStroke(KeyEvent.VK_DOWN, KeyEvent.SHIFT_DOWN_MASK, 896, 1009, true); 287 288 checkActionByKeyStroke(KeyEvent.VK_UP, 0, 1014, 898, false); 291 292 checkActionByKeyStroke(KeyEvent.VK_UP, KeyEvent.SHIFT_DOWN_MASK, 1014, 898, true); 294 295 checkActionByKeyStroke(KeyEvent.VK_DOWN, 0, 898, 1014, false); 297 298 checkActionByKeyStroke(KeyEvent.VK_DOWN, KeyEvent.SHIFT_DOWN_MASK, 898, 1014, true); 300 301 checkActionByKeyStroke(KeyEvent.VK_UP, 0, 1011, 896, false); 303 checkActionByKeyStroke(KeyEvent.VK_DOWN, 0, -1, 1011, false); 304 305 306 } finally{ 307 closeFileWithDiscard(); 308 } 309 } 310 311 } 312
| Popular Tags
|