KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > qa > form > undoredo > BaseTest


1     package org.netbeans.qa.form.undoredo;
2 /*
3  * The contents of this file are subject to the terms of the Common Development
4  * and Distribution License (the License). You may not use this file except in
5  * compliance with the License.
6  *
7  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
8  * or http://www.netbeans.org/cddl.txt.
9  *
10  * When distributing Covered Code, include this CDDL Header Notice in each file
11  * and include the License file at http://www.netbeans.org/cddl.txt.
12  * If applicable, add the following below the CDDL Header, with the fields
13  * enclosed by brackets [] replaced by your own identifying information:
14  * "Portions Copyrighted [year] [name of copyright owner]"
15  *
16  * The Original Software is NetBeans. The Initial Developer of the Original
17  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
18  * Microsystems, Inc. All Rights Reserved.
19  */

20
21 import java.io.PrintStream JavaDoc;
22 import java.io.PrintWriter JavaDoc;
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 JavaDoc;
39 import java.awt.Component JavaDoc;
40 import java.awt.Container JavaDoc;
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.junit.ide.ProjectSupport;
47
import org.netbeans.qa.form.*;
48 import java.io.*;
49
50 public class BaseTest extends JellyTestCase {
51     
52     public String JavaDoc FILE_NAME = "clear_JFrame";
53     public String JavaDoc PACKAGE_NAME = "data";
54     public String JavaDoc DATA_PROJECT_NAME = "SampleProject";
55     public String JavaDoc 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 JavaDoc fileName;
70     
71     /** */
72     public BaseTest(String JavaDoc testName) {
73         super(testName);
74     }
75     /*
76      * select tab in PropertySheet
77      */

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     //select tab in PropertySheet
88
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         //init property sheet and select the proper "tab"
125
PropertySheetOperator pso = cio.properties();
126         // selectPropertiesTab(pso);
127
new Action(null,"Add From Palette|Swing Containers|Panel").performPopup(new Node(inspector.treeComponents(),"[JFrame]"));
128         // selectPropertiesTab(pso);
129
new Action(null,"Add From Palette|Swing Containers|Panel").performPopup(new Node(inspector.treeComponents(),"[JFrame]"));
130         
131         
132         
133         
134         //change properties (color)
135
inspector.selectComponent("[JFrame]|JPanel1 [JPanel]");
136         selectPropertiesTab(pso);
137         
138         // new ColorProperty(pso, "background").setRGBValue(202,234,223);
139

140         new ColorProperty(new PropertySheetOperator("jPanel1 [JPanel] - Properties"), "background").setColorValue(new Color JavaDoc(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         // add JButton1 to JPanel1
147
new Action(null,"Add From Palette|Swing Controls|Button").performPopup(new Node(inspector.treeComponents(),"[JFrame]|JPanel1 [JPanel]"));
148         
149         // add JButton2 to JPanel2
150
new Action(null,"Add From Palette|Swing Controls|Button").performPopup(new Node(inspector.treeComponents(),"[JFrame]|JPanel2 [JPanel]"));
151         
152         // cut-paste JButton1 from JPanel1 to JPanel2
153

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         // change properties
160
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         // change order
165
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         // change generated code
172
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         // event
186
selectEventsTab(pso);
187         
188         Property prop = new Property(pso, "actionPerformed");
189         prop.setValue("myAction");
190         
191         
192         // selectPropertiesTab(pso);
193

194         
195         for (int i=0;i<2;i++) {
196             // section undo testing
197

198             openAction.perform(formnode);
199             sleep(2000) ;
200             
201             assertTrue("check in Editor 11b",checkEditor("private void myAction"));
202             
203             undo(1);
204             
205             // check if aaa, bbb are generated
206

207             assertTrue("check in Editor 10b",checkEditor("aaa,bbb"));
208             
209             undo(1);
210             
211             // check if aaa, bbb are not in editor
212
assertTrue("check i// assertTrun Editor 10a",!checkEditor("aaa,bbb"));
213             
214             
215             //now it's not possible to check, in editore, there is different code (no on the same row)
216
assertTrue("check in Editor 9b",checkEditor("jPanel2.add(jButton1),jPanel2.add(jButton2)"));
217             
218             undo(1);
219             //check if panel order was changed
220
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             //check if both buttons are in panel2
231
assertTrue("check in Editor 7a",checkEditor("jPanel2.add(jButton1"));
232             assertTrue("check in Editor 7b",checkEditor("jPanel2.add(jButton2"));
233             
234             undo(1);
235             //check if panel2 has only button2 and panel1 has only button1 as well
236
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             //check if button2 is not in jframe and background of panel2 is still set
242
assertTrue("check in Editor 4a",!checkEditor("jButton2"));
243             assertTrue("check in Editor 4b",checkEditor("jPanel2.setBackground"));
244             
245             undo(1);
246             //check if button1 is not in jframe and background of panel1 is still set
247
assertTrue("check in Editor 3a",!checkEditor("jButton1"));
248             assertTrue("check in Editor 3b",checkEditor("jPanel1.setBackground"));
249             
250             undo(1);
251             //check background if is not set on panel2
252
assertTrue("check in Editor 2a",!checkEditor("jPanel2.setBackground"));
253             
254             undo(1);
255             //check background if is not set on panel1
256
assertTrue("check in Editor 1a",!checkEditor("jPanel1.setBackground"));
257             
258             
259             undo(1);
260             
261             //check if panel2 disappeared from jframe
262
assertTrue("check in Editor 0a",!checkEditor("jPanel2"));
263             
264             undo(1);
265             //check if panel1 disappeared from jframe
266
assertTrue("check in Editor 0b",!checkEditor("jPanel1"));
267             
268             
269             //redo
270

271             redo(1);
272             //check if panel1 is in jframe
273
assertTrue("check in Editor R01a",checkEditor("jPanel1"));
274             
275             redo(1);
276             //check if panel1 is in jframe
277
assertTrue("check in Editor R02a",checkEditor("jPanel2"));
278             
279             redo(1);
280             //check if background was set for panel1
281
assertTrue("check in Editor R03a",checkEditor("jPanel1.setBackground"));
282             
283             redo(1);
284             //check if background was set for panel2
285
assertTrue("check in Editor R04a",checkEditor("jPanel2.setBackground"));
286             
287             redo(1);
288             //check if button1 was added in panel1
289
assertTrue("check in Editor R05a",checkEditor("jPanel1.add(jButton1"));
290             
291             redo(1);
292             //check if button2 was added in panel2
293
assertTrue("check in Editor R06a",checkEditor("jPanel2.add(jButton2"));
294             
295             redo(1);
296             //check if panel2 contains both buttons and panel1 is empty
297
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             //check if text in html was added
303
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             //check if buttons order was changed
308
assertTrue("check in Editor 9b",checkEditor("jPanel2.add(jButton1),jPanel2.add(jButton2)"));
309             
310             redo(1);
311             //check if string aaa, bbb was added in editor
312
assertTrue("check in Editor 10b",checkEditor("aaa,bbb"));
313             
314             redo(1);
315             //check if action "myAction" was added in editor
316
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     /** Run test.
336      */

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 JavaDoc 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 JavaDoc e) {
350             System.out.println("e:" + e.getMessage() );
351         }
352         compareReferenceFiles();
353     }
354     
355     /** Run test.
356      */

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 JavaDoc 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     /** Run test.
377      */

378     
379     
380     
381     void undo(int n) {
382         //first switch to FormEditor tab
383
/*OpenAction openAction = new OpenAction();
384 openAction.perform(formnode);
385  */

386         MainWindowOperator mainWindow = MainWindowOperator.getDefault();
387         
388         OpenAction openAction = new OpenAction();
389         openAction.perform(formnode);
390         
391         sleep(500) ;
392         //inspector.selectComponent("[JFrame]");
393
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         //first switch to FormEditor tab
402
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 JavaDoc e) {}
416     }
417     
418     
419     boolean checkEditor(String JavaDoc regexp) {
420         /*editor = ewo.getEditor("clear_JFrame");
421         editor = new EditorOperator("clear_JFrame");
422          */

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 JavaDoc editortext = editor.getText();
431         // text without escape characters
432
/*
433         StringBuffer newtext = new StringBuffer();
434         for (int i=0;i<editortext.length();i++) {
435             char ch = editortext.charAt(i);
436             if (ch >= 32)
437                 newtext.append(ch);
438         }
439          */

440         java.util.StringTokenizer JavaDoc tokenizer = new java.util.StringTokenizer JavaDoc(regexp,",");
441         int pos = -1;
442         boolean result = true;
443         while(tokenizer.hasMoreTokens()) {
444             String JavaDoc 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     /** Test could be executed internaly in Forte without Tonga
456      * @param args arguments from command line
457      */

458     public static void main(String JavaDoc[] 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         //suite.addTest(new BaseTest("testFormFile"));
466
//suite.addTest(new BaseTest("testJavaFile"));
467
return suite;
468     }
469    /* public static junit.framework.Test suite() {
470         return new NbTestSuite(BaseTest.class);
471     }
472     */

473     
474 }
475
476
Popular Tags