1 package org.netbeans.qa.form.undoredo; 2 20 21 import java.io.PrintStream ; 22 import java.io.PrintWriter ; 23 import org.netbeans.jellytools.NbDialogOperator; 24 import org.netbeans.jellytools.ProjectsTabOperator; 25 import org.netbeans.junit.NbTestCase; 26 27 import org.netbeans.junit.NbTestSuite; 28 29 import org.netbeans.jemmy.JemmyProperties; 30 import org.netbeans.jellytools.*; 31 import org.netbeans.jellytools.modules.form.*; 32 import org.netbeans.jellytools.modules.form.properties.editors.*; 33 import org.netbeans.jellytools.nodes.*; 34 import org.netbeans.jellytools.properties.*; 35 import org.netbeans.jellytools.actions.*; 36 37 import org.netbeans.jemmy.operators.*; 38 import java.awt.Color ; 39 import java.awt.Component ; 40 import java.awt.Container ; 41 import org.netbeans.jellytools.properties.Property; 42 import org.netbeans.jemmy.ComponentSearcher; 43 import org.netbeans.jemmy.operators.JTabbedPaneOperator; 44 import org.netbeans.jemmy.operators.Operator; 45 import org.netbeans.jemmy.operators.JToggleButtonOperator; 46 import org.netbeans.qa.form.*; 48 import java.io.*; 49 50 public class BaseTest extends JellyTestCase { 51 52 public String FILE_NAME = "clear_JFrame"; 53 public String PACKAGE_NAME = "data"; 54 public String DATA_PROJECT_NAME = "SampleProject"; 55 public String FRAME_ROOT = "[JFrame]"; 56 57 public MainWindowOperator mainWindow; 58 public ProjectsTabOperator pto; 59 public Node formnode; 60 61 62 63 ComponentInspectorOperator inspector; 64 FormDesignerOperator formDesigner; 65 ComponentPaletteOperator palette; 66 67 EditorOperator editor; 68 EditorWindowOperator ewo; 69 String fileName; 70 71 72 public BaseTest(String testName) { 73 super(testName); 74 } 75 78 public void selectPropertiesTab(PropertySheetOperator pso){ 79 selectTab(pso, 0); 80 } 81 public void selectEventsTab(PropertySheetOperator pso){ 82 selectTab(pso, 1); 83 } 84 public void selectCodeTab(PropertySheetOperator pso){ 85 selectTab(pso, 2); 86 } 87 public void selectTab(PropertySheetOperator pso, int index){ 89 sleep(1000); 90 JToggleButtonOperator tbo=null; 91 if (tbo==null) { 92 tbo = new JToggleButtonOperator(pso, " ", index); 93 } 94 tbo.push(); 95 } 96 97 98 public void testScenario() { 99 100 mainWindow = MainWindowOperator.getDefault(); 101 pto = new ProjectsTabOperator(); 102 ProjectRootNode prn = pto.getProjectRootNode(DATA_PROJECT_NAME); 103 prn.select(); 104 formnode = new Node(prn, "Source Packages|" + PACKAGE_NAME + "|" + FILE_NAME); 105 formnode.select(); 106 log("Form node selected."); 107 108 EditAction editAction = new EditAction(); 109 editAction.perform(formnode); 110 log("Source Editor window opened."); 111 112 OpenAction openAction = new OpenAction(); 113 openAction.perform(formnode); 114 log("Form Editor window opened."); 115 116 ComponentInspectorOperator cio = new ComponentInspectorOperator(); 117 Node inspectorRootNode = new Node(cio.treeComponents(), FRAME_ROOT); 118 inspectorRootNode.select(); 119 inspectorRootNode.expand(); 120 121 palette = new ComponentPaletteOperator(); 122 inspector = new ComponentInspectorOperator(); 123 124 PropertySheetOperator pso = cio.properties(); 126 new Action(null,"Add From Palette|Swing Containers|Panel").performPopup(new Node(inspector.treeComponents(),"[JFrame]")); 128 new Action(null,"Add From Palette|Swing Containers|Panel").performPopup(new Node(inspector.treeComponents(),"[JFrame]")); 130 131 132 133 134 inspector.selectComponent("[JFrame]|JPanel1 [JPanel]"); 136 selectPropertiesTab(pso); 137 138 140 new ColorProperty(new PropertySheetOperator("jPanel1 [JPanel] - Properties"), "background").setColorValue(new Color (202,234,223)); 141 142 inspector.selectComponent("[JFrame]|JPanel2 [JPanel]"); 143 selectPropertiesTab(pso); 144 new ColorProperty(new PropertySheetOperator("jPanel2 [JPanel] - Properties"), "background").setRGBValue(252,34,3); 145 146 new Action(null,"Add From Palette|Swing Controls|Button").performPopup(new Node(inspector.treeComponents(),"[JFrame]|JPanel1 [JPanel]")); 148 149 new Action(null,"Add From Palette|Swing Controls|Button").performPopup(new Node(inspector.treeComponents(),"[JFrame]|JPanel2 [JPanel]")); 151 152 154 new Action(null,"Cut").performPopup(new Node(inspector.treeComponents(),"[JFrame]|JPanel1 [JPanel]|jButton1 [JButton]")); 155 new Action(null,"Paste").performPopup(new Node(inspector.treeComponents(),"[JFrame]|JPanel2 [JPanel]")); 156 157 158 159 inspector.selectComponent("[JFrame]|JPanel2 [JPanel]|jButton1 [JButton]"); 161 162 new Property(pso, "text").setValue("<html><font color='red' size='+3'>QA</font> test"); 163 164 new ActionNoBlock(null,"Change Order...").performPopup(new Node(inspector.treeComponents(),"[JFrame]|JPanel2 [JPanel]")); 166 NbDialogOperator changeOrder = new NbDialogOperator("Change Order"); 167 new JListOperator(changeOrder).selectItem(1); 168 new JButtonOperator(changeOrder,"Move up").doClick(); 169 changeOrder.btOK().doClick(); 170 171 inspector.selectComponent("[JFrame]|JPanel2 [JPanel]|jButton1 [JButton]"); 173 174 new Property(pso, "text").openEditor(); 175 FormCustomEditorOperator fceo = new FormCustomEditorOperator("text"); 176 fceo.advanced(); 177 FormCustomEditorAdvancedOperator fceao = new FormCustomEditorAdvancedOperator(); 178 fceao.setGeneratePreInitializationCode(true); 179 fceao.setPreInitializationCode("aaa"); 180 fceao.setGeneratePostInitializationCode(true); 181 fceao.setPostInitializationCode("bbb"); 182 fceao.ok(); 183 fceo.ok(); 184 185 selectEventsTab(pso); 187 188 Property prop = new Property(pso, "actionPerformed"); 189 prop.setValue("myAction"); 190 191 192 194 195 for (int i=0;i<2;i++) { 196 198 openAction.perform(formnode); 199 sleep(2000) ; 200 201 assertTrue("check in Editor 11b",checkEditor("private void myAction")); 202 203 undo(1); 204 205 207 assertTrue("check in Editor 10b",checkEditor("aaa,bbb")); 208 209 undo(1); 210 211 assertTrue("check i// assertTrun Editor 10a",!checkEditor("aaa,bbb")); 213 214 215 assertTrue("check in Editor 9b",checkEditor("jPanel2.add(jButton1),jPanel2.add(jButton2)")); 217 218 undo(1); 219 assertTrue("check in Editor 9b",checkEditor("jPanel2.add(jButton2),jPanel2.add(jButton1)")); 221 222 223 assertTrue("check in Editor 8b",checkEditor("<html>")); 224 225 undo(1); 226 227 assertTrue("check in Editor 8a",!checkEditor("<html>")); 228 229 230 assertTrue("check in Editor 7a",checkEditor("jPanel2.add(jButton1")); 232 assertTrue("check in Editor 7b",checkEditor("jPanel2.add(jButton2")); 233 234 undo(1); 235 assertTrue("check in Editor 7c",!checkEditor("jPanel2.add(jButton1")); 237 assertTrue("check in Editor 7d",checkEditor("jPanel1.add(jButton1")); 238 assertTrue("check in Editor 7e",checkEditor("jPanel2.add(jButton2")); 239 240 undo(1); 241 assertTrue("check in Editor 4a",!checkEditor("jButton2")); 243 assertTrue("check in Editor 4b",checkEditor("jPanel2.setBackground")); 244 245 undo(1); 246 assertTrue("check in Editor 3a",!checkEditor("jButton1")); 248 assertTrue("check in Editor 3b",checkEditor("jPanel1.setBackground")); 249 250 undo(1); 251 assertTrue("check in Editor 2a",!checkEditor("jPanel2.setBackground")); 253 254 undo(1); 255 assertTrue("check in Editor 1a",!checkEditor("jPanel1.setBackground")); 257 258 259 undo(1); 260 261 assertTrue("check in Editor 0a",!checkEditor("jPanel2")); 263 264 undo(1); 265 assertTrue("check in Editor 0b",!checkEditor("jPanel1")); 267 268 269 271 redo(1); 272 assertTrue("check in Editor R01a",checkEditor("jPanel1")); 274 275 redo(1); 276 assertTrue("check in Editor R02a",checkEditor("jPanel2")); 278 279 redo(1); 280 assertTrue("check in Editor R03a",checkEditor("jPanel1.setBackground")); 282 283 redo(1); 284 assertTrue("check in Editor R04a",checkEditor("jPanel2.setBackground")); 286 287 redo(1); 288 assertTrue("check in Editor R05a",checkEditor("jPanel1.add(jButton1")); 290 291 redo(1); 292 assertTrue("check in Editor R06a",checkEditor("jPanel2.add(jButton2")); 294 295 redo(1); 296 assertTrue("check in Editor R07a",checkEditor("jPanel2.add(jButton1")); 298 assertTrue("check in Editor R07b",checkEditor("jPanel2.add(jButton2")); 299 assertTrue("check in Editor R07c",!checkEditor("jPanel1.add(jButton2")); 300 301 redo(1); 302 assertTrue("check in Editor R08a",checkEditor("<html>")); 304 assertTrue("check in Editor R08b",checkEditor("jPanel2.add(jButton2),jPanel2.add(jButton1)")); 305 306 redo(1); 307 assertTrue("check in Editor 9b",checkEditor("jPanel2.add(jButton1),jPanel2.add(jButton2)")); 309 310 redo(1); 311 assertTrue("check in Editor 10b",checkEditor("aaa,bbb")); 313 314 redo(1); 315 assertTrue("check in Editor 11b",checkEditor("private void myAction")); 317 318 319 320 321 } 322 323 undo(11); 324 325 326 327 328 Action saveAction; 329 saveAction = new Action("File|Save", null); 330 saveAction.perform(); 331 332 } 333 334 335 337 public void testFormFile() { 338 try { 339 getRef().print( 340 VisualDevelopmentUtil.readFromFile( 341 getDataDir().getAbsolutePath() + File.separatorChar + DATA_PROJECT_NAME + File.separatorChar + "src" + File.separatorChar + PACKAGE_NAME + File.separatorChar + FILE_NAME + ".form") 342 ); 343 } catch (Exception e) { 344 fail("Fail during create reffile: " + e.getMessage()); 345 } 346 System.out.println("reffile: " + this.getName()+".ref"); 347 try { 348 System.out.println("workdir: " + getWorkDir()); 349 } catch (Exception e) { 350 System.out.println("e:" + e.getMessage() ); 351 } 352 compareReferenceFiles(); 353 } 354 355 357 public void testJavaFile() { 358 try { 359 getRef().print( 360 VisualDevelopmentUtil.readFromFile( 361 getDataDir().getAbsolutePath() + File.separatorChar + DATA_PROJECT_NAME + File.separatorChar + "src" + File.separatorChar + PACKAGE_NAME + File.separatorChar + FILE_NAME + ".java") 362 ); 363 } catch (Exception e) { 364 fail("Fail during create reffile: " + e.getMessage()); 365 } 366 compareReferenceFiles(); 367 368 ewo = new EditorWindowOperator(); 369 ewo.closeDiscard(); 370 371 372 log("Test finished"); 373 374 375 } 376 378 379 380 381 void undo(int n) { 382 386 MainWindowOperator mainWindow = MainWindowOperator.getDefault(); 387 388 OpenAction openAction = new OpenAction(); 389 openAction.perform(formnode); 390 391 sleep(500) ; 392 for (int i=0;i<n;i++) { 394 sleep(500); 395 mainWindow.getToolbarButton(mainWindow.getToolbar("Edit"), "Undo").push(); 396 sleep(500); 397 } 398 } 399 400 void redo(int n) { 401 OpenAction openAction = new OpenAction(); 403 openAction.perform(formnode); 404 405 MainWindowOperator mainWindow = MainWindowOperator.getDefault(); 406 inspector.selectComponent("[JFrame]"); 407 for (int i=0;i<n;i++) { 408 sleep(1000); 409 mainWindow.getToolbarButton(mainWindow.getToolbar("Edit"), "Redo").push(); 410 sleep(1000); 411 } 412 } 413 414 void sleep(int ms) { 415 try {Thread.sleep(ms);} catch (Exception e) {} 416 } 417 418 419 boolean checkEditor(String regexp) { 420 423 EditAction editAction = new EditAction(); 424 editAction.perform(formnode); 425 log("Source Editor window opened."); 426 427 428 editor = ewo.getEditor(); 429 sleep(300); 430 String editortext = editor.getText(); 431 440 java.util.StringTokenizer tokenizer = new java.util.StringTokenizer (regexp,","); 441 int pos = -1; 442 boolean result = true; 443 while(tokenizer.hasMoreTokens()) { 444 String token = tokenizer.nextToken(); 445 pos = editortext.indexOf(token,pos); 446 if (pos == -1) { 447 result = false; 448 break; 449 } 450 pos += token.length(); 451 } 452 System.out.println("Result: " + result); 453 return result; 454 } 455 458 public static void main(String [] args) { 459 System.setProperty("nbjunit.workdir","c:/z"); 460 junit.textui.TestRunner.run(suite()); 461 } 462 public static NbTestSuite suite() { 463 NbTestSuite suite = new NbTestSuite(); 464 suite.addTest(new BaseTest("testScenario")); 465 return suite; 468 } 469 473 474 } 475 476 | Popular Tags |