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 org.netbeans.test.uml.componentdiagram;
043:
044: import java.awt.event.KeyEvent;
045: import org.netbeans.jellytools.MainWindowOperator;
046: import org.netbeans.jellytools.ProjectsTabOperator;
047: import org.netbeans.jellytools.nodes.Node;
048: import org.netbeans.jemmy.EventTool;
049: import org.netbeans.jemmy.operators.JButtonOperator;
050: import org.netbeans.jemmy.operators.JCheckBoxOperator;
051: import org.netbeans.jemmy.operators.JDialogOperator;
052: import org.netbeans.jemmy.operators.JTreeOperator;
053:
054: import org.netbeans.junit.NbTestSuite; //import qa.uml.UMLClassOperator;
055: import org.netbeans.test.umllib.DiagramElementOperator;
056: import org.netbeans.test.umllib.DiagramOperator;
057: import org.netbeans.test.umllib.DrawingAreaOperator;
058: import org.netbeans.test.umllib.ElementTypes;
059: import org.netbeans.test.umllib.UMLPaletteOperator;
060: import org.netbeans.test.umllib.testcases.UMLTestCase;
061:
062: /**
063: *
064: * @author psb
065: * @spec UML/ComponentDiagram.xml
066: */
067: public class PlaceAndDeleteByKey extends UMLTestCase {
068:
069: //some system properties
070: private static String contextPropItemName = "Properties";
071: private static String umlPropertyWindowTitle = "Project Properties";
072: private static String umlSourcePackagesLabel = "Source Packages";
073: private static String umlSourcePackagesColumn = "Folder Label";
074: private static String umlSourceUsageColumn = "Model?";
075: private static String mainTreeTabName = "Projects";
076: //common test properties
077: private static String prName = "ComponentDiagramProjectDK";
078: private static String project = prName + "|Model";
079: private static String sourceProject = "source";
080: private static boolean codeSync = false;
081: private static String defaultNewElementName = org.netbeans.test.uml.componentdiagram.utils.Utils.defaultNewElementName;
082: private static String defaultReturnType = org.netbeans.test.uml.componentdiagram.utils.Utils.defaultReturnType;
083: private static String defaultAttributeType = org.netbeans.test.uml.componentdiagram.utils.Utils.defaultAttributeType;
084: private static String defaultAttributeVisibility = org.netbeans.test.uml.componentdiagram.utils.Utils.defaultAttributeVisibility;
085: private static String defaultOperationVisibility = org.netbeans.test.uml.componentdiagram.utils.Utils.defaultOperationVisibility;
086: private ProjectsTabOperator pto = null;
087: private Node lastDiagramNode = null;
088: private JTreeOperator prTree = null;
089: private String lastTestCase = null;
090: private static String workdir = System.getProperty("xtest.workdir");
091: //--
092: private static String diagramName1 = "cpD1";
093: private static String workPkg1 = "pkg1";
094: private static String element1 = "Component";
095: private static String elementName1 = defaultNewElementName;
096: private static ElementTypes elementType1 = ElementTypes.COMPONENT;
097: //--
098: private static String diagramName2 = "cpD2";
099: private static String workPkg2 = "pkg2";
100: private static String element2 = "Class";
101: private static String elementName2 = defaultNewElementName;
102: private static ElementTypes elementType2 = ElementTypes.CLASS;
103: //--
104: private static String diagramName3 = "cpD3";
105: private static String workPkg3 = "pkg3";
106: private static String element3 = "Interface";
107: private static String elementName3 = defaultNewElementName;
108: private static ElementTypes elementType3 = ElementTypes.INTERFACE;
109: //--
110: private static String diagramName4 = "cpD4";
111: private static String workPkg4 = "pkg4";
112: private static String element4 = "Package";
113: private static String elementName4 = defaultNewElementName;
114: private static ElementTypes elementType4 = ElementTypes.PACKAGE;
115: //--
116: private static String diagramName5 = "cpD5";
117: private static String workPkg5 = "pkg5";
118: private static String element5 = "Artifact";
119: private static String elementName5 = defaultNewElementName;
120: private static ElementTypes elementType5 = ElementTypes.ARTIFACT;
121: //--
122: private static String diagramName6 = "cpD6";
123: private static String workPkg6 = "pkg6";
124: private static String element6 = "Assembly Connector";
125: private static String elementName6 = defaultNewElementName;
126: private static ElementTypes elementType6 = ElementTypes.INTERFACE;
127: //--
128: private static String diagramName7 = "cpD7";
129: private static String workPkg7 = "pkg7";
130: private static String element7 = "Template Class";
131: private static String elementName7 = defaultNewElementName;
132: private static ElementTypes elementType7 = ElementTypes.TEMPLATE_CLASS;
133: //--
134: private static String diagramName8 = "cpD8";
135: private static String workPkg8 = "pkg8";
136: private static String element8 = "Derivation Classifier";
137: private static String elementName8 = defaultNewElementName;
138: private static ElementTypes elementType8 = ElementTypes.DERIVATION_CLASSIFIER;
139: //--
140: private static String diagramName9 = "cpD9";
141: private static String workPkg9 = "pkg9";
142: private static String element9 = "Design Pattern";
143: private static String elementName9 = defaultNewElementName;
144: private static ElementTypes elementType9 = ElementTypes.DESIGN_PATTERN;
145: //--
146: private static String diagramName10 = "cpD10";
147: private static String workPkg10 = "pkg10";
148: private static String element10 = "Role";
149: private static String elementName10 = defaultNewElementName;
150: private static ElementTypes elementType10 = ElementTypes.ROLE;
151: //--
152: private static String diagramName11 = "cpD11";
153: private static String workPkg11 = "pkg11";
154: private static String element11 = "Interface Role";
155: private static String elementName11 = defaultNewElementName;
156: private static ElementTypes elementType11 = ElementTypes.INTERFACE_ROLE;
157: //--
158: private static String diagramName12 = "cpD12";
159: private static String workPkg12 = "pkg12";
160: private static String element12 = "Actor Role";
161: private static String elementName12 = defaultNewElementName;
162: private static ElementTypes elementType12 = ElementTypes.ACTOR_ROLE;
163: //--
164: private static String diagramName13 = "cpD13";
165: private static String workPkg13 = "pkg13";
166: private static String element13 = "Class Role";
167: private static String elementName13 = defaultNewElementName;
168: private static ElementTypes elementType13 = ElementTypes.CLASS_ROLE;
169: //--
170: private static String diagramName14 = "cpD14";
171: private static String workPkg14 = "pkg14";
172: private static String element14 = "Use Case Role";
173: private static String elementName14 = defaultNewElementName;
174: private static ElementTypes elementType14 = ElementTypes.USE_CASE_ROLE;
175: //--
176: private static String diagramName15 = "cpD15";
177: private static String workPkg15 = "pkg15";
178: private static String element15 = "Role Binding";
179: private static String elementName15 = defaultNewElementName;
180: private static ElementTypes elementType15 = ElementTypes.ROLE_BINDING;
181: //--
182: private static String diagramName16 = "cpD16";
183: private static String workPkg16 = "pkg16";
184: private static String element16 = "Comment";
185: private static String elementName16 = "";
186: private static ElementTypes elementType16 = ElementTypes.COMMENT;
187: //--
188: private static String diagramName17 = "cpD17";
189: private static String workPkg17 = "pkg17";
190: private static String element17 = "Link Comment";
191: private static String elementName17 = "";
192: private static ElementTypes elementType17 = ElementTypes.LINK_COMMENT;
193:
194: //--
195: /* private static String diagramName15 = "cpD15";
196: private static String workPkg15 = "pkg15";
197: private static String element15="Activity Edge";
198: private static String treeNode15=element15;
199: private static String elementName15="";
200: private static LinkTypes elementType15=LinkTypes.ACTIVITY_EDGE;
201: private static boolean eIO15=true;
202: //--
203: private static String diagramName16 = "cpD16";
204: private static String workPkg16 = "pkg16";
205: private static String element16="Dependency";
206: private static String treeNode16=element16;
207: private static String elementName16="";
208: private static LinkTypes elementType16=LinkTypes.DEPENDENCY;
209: private static boolean eIO16=false;
210: //--
211: private static String diagramName17 = "cpD17";
212: private static String workPkg17 = "pkg17";
213: private static String element17="Realize";
214: private static String treeNode17="Realization";
215: private static String elementName17="";
216: private static LinkTypes elementType17=LinkTypes.REALIZE;
217: private static boolean eIO17=false;
218: //--
219: private static String diagramName18 = "cpD18";
220: private static String workPkg18 = "pkg18";
221: private static String element18="Usage";
222: private static String treeNode18=element18;
223: private static String elementName18="";
224: private static LinkTypes elementType18=LinkTypes.USAGE;
225: private static boolean eIO18=false;
226: //--
227: private static String diagramName19 = "cpD19";
228: private static String workPkg19 = "pkg19";
229: private static String element19="Permission";
230: private static String treeNode19=element19;
231: private static String elementName19="";
232: private static LinkTypes elementType19=LinkTypes.PERMISSION;
233: private static boolean eIO19=false;
234: //--
235: private static String diagramName20 = "cpD20";
236: private static String workPkg20 = "pkg20";
237: private static String element20="Abstraction";
238: private static String treeNode20=element20;
239: private static String elementName20="";
240: private static LinkTypes elementType20=LinkTypes.ABSTRACTION;
241: private static boolean eIO20=false;*/
242:
243: /** Need to be defined because of JUnit */
244: public PlaceAndDeleteByKey(String name) {
245: super (name);
246: }
247:
248: public static NbTestSuite suite() {
249: NbTestSuite suite = new NbTestSuite(
250: org.netbeans.test.uml.componentdiagram.PlaceAndDeleteByKey.class);
251: return suite;
252: }
253:
254: private DiagramOperator createOrOpenDiagram(String project,
255: String workPkg, String diagram) {
256: org.netbeans.test.umllib.Utils.RetAll rt = org.netbeans.test.umllib.Utils
257: .createOrOpenDiagram(
258: project,
259: workPkg,
260: diagram,
261: org.netbeans.test.umllib.NewDiagramWizardOperator.COMPONENT_DIAGRAM);
262: pto = rt.pto;
263: prTree = new JTreeOperator(pto);
264: lastDiagramNode = rt.lastDiagramNode;
265: return rt.dOp;
266: }
267:
268: public void testCreateAndByKeyDelete1() {
269: testElementPlaceAndDelete(workPkg1, diagramName1, element1,
270: elementName1, elementType1);
271: }
272:
273: public void testCreateAndByKeyDelete2() {
274: testElementPlaceAndDelete(workPkg2, diagramName2, element2,
275: elementName2, elementType2);
276: }
277:
278: public void testCreateAndByKeyDelete3() {
279: testElementPlaceAndDelete(workPkg3, diagramName3, element3,
280: elementName3, elementType3);
281: }
282:
283: public void testCreateAndByKeyDelete4() {
284: testElementPlaceAndDelete(workPkg4, diagramName4, element4,
285: elementName4, elementType4);
286: }
287:
288: public void testCreateAndByKeyDelete5() {
289: testElementPlaceAndDelete(workPkg5, diagramName5, element5,
290: elementName5, elementType5);
291: }
292:
293: public void testCreateAndByKeyDelete6() {
294: testElementPlaceAndDelete(workPkg6, diagramName6, element6,
295: elementName6, elementType6);
296: }
297:
298: public void testCreateAndByKeyDelete7() {
299: testElementPlaceAndDelete(workPkg7, diagramName7, element7,
300: elementName7, elementType7);
301: }
302:
303: public void testCreateAndByKeyDelete8() {
304: testElementPlaceAndDelete(workPkg8, diagramName8, element8,
305: elementName8, elementType8);
306: }
307:
308: public void testCreateAndByKeyDelete9() {
309: testElementPlaceAndDelete(workPkg9, diagramName9, element9,
310: elementName9, elementType9);
311: }
312:
313: public void testCreateAndByKeyDelete10() {
314: testElementPlaceAndDelete(workPkg10, diagramName10, element10,
315: elementName10, elementType10);
316: }
317:
318: public void testCreateAndByKeyDelete11() {
319: testElementPlaceAndDelete(workPkg11, diagramName11, element11,
320: elementName11, elementType11);
321: }
322:
323: public void testCreateAndByKeyDelete12() {
324: testElementPlaceAndDelete(workPkg12, diagramName12, element12,
325: elementName12, elementType12);
326: }
327:
328: public void testCreateAndByKeyDelete13() {
329: testElementPlaceAndDelete(workPkg13, diagramName13, element13,
330: elementName13, elementType13);
331: }
332:
333: public void testCreateAndByKeyDelete14() {
334: testElementPlaceAndDelete(workPkg14, diagramName14, element14,
335: elementName14, elementType14);
336: }
337:
338: public void testCreateAndByKeyDelete15() {
339: testElementPlaceAndDelete(workPkg15, diagramName15, element15,
340: elementName15, elementType15);
341: }
342:
343: public void testCreateAndByKeyDelete16() {
344: testElementPlaceAndDelete(workPkg16, diagramName16, element16,
345: elementName16, elementType16);
346: }
347:
348: public void testCreateAndByKeyDelete17() {
349: testElementPlaceAndDelete(workPkg17, diagramName17, element17,
350: elementName17, elementType17);
351: }
352:
353: public void setUp() {
354: System.out.println("######## " + getName() + " #######");
355: pto = ProjectsTabOperator.invoke();
356: if (!codeSync) {
357: org.netbeans.test.uml.componentdiagram.utils.Utils
358: .commonComponentDiagramSetup(workdir, prName);
359: //
360: codeSync = true;
361: }
362:
363: }
364:
365: public void tearDown() {
366: org.netbeans.test.umllib.util.Utils
367: .makeScreenShot(lastTestCase);
368: //popup protection
369: MainWindowOperator.getDefault().pushKey(KeyEvent.VK_ESCAPE);
370: new EventTool().waitNoEvent(1000);
371: //
372: closeAllModal();
373: org.netbeans.test.umllib.util.Utils.saveAll();
374: if (lastDiagramNode != null) {
375: lastDiagramNode.collapse();
376: new Node(lastDiagramNode.tree(), lastDiagramNode
377: .getParentPath()).collapse();
378: }
379: try {
380: DiagramOperator d = new DiagramOperator("cpD");
381: d.closeAllDocuments();
382: d.waitClosed();
383: new EventTool().waitNoEvent(1000);
384: } catch (Exception ex) {
385: }
386: ;
387: closeAllModal();
388: //save
389: org.netbeans.test.umllib.util.Utils.tearDown();
390: }
391:
392: private void testElementPlaceAndDelete(String workPkg,
393: String diagramName, String element, String elementName,
394: ElementTypes elementType, String newName) {
395: lastTestCase = getCurrentTestNamesWithCheck()[1];
396: DiagramOperator d = createOrOpenDiagram(project, workPkg,
397: diagramName);
398: //
399: Node pkgNode = new Node(prTree, lastDiagramNode.getParentPath());
400: int numChild = pkgNode.getChildren().length;
401: //
402: UMLPaletteOperator pl = new UMLPaletteOperator();
403: //
404: DrawingAreaOperator drAr = d.getDrawingArea();
405: java.awt.Point a = drAr.getFreePoint();
406: //
407: DiagramElementOperator dEl = null;
408: try {
409: if (elementType.equals(ElementTypes.COMMENT)
410: || elementType.equals(ElementTypes.LINK_COMMENT)) {
411: dEl = d
412: .putElementOnDiagram(
413: newName,
414: elementType,
415: a.x,
416: a.y,
417: new DiagramElementOperator.PropertyNamer());
418: } else {
419: dEl = d.putElementOnDiagram(newName, elementType, a.x,
420: a.y);
421: }
422: } catch (Exception ex) {
423: fail(element + " wasn't added to diagram.");
424: }
425: Node elNode = new Node(pkgNode, newName);
426: //
427: new EventTool().waitNoEvent(500);
428: //
429: a = drAr.getFreePoint();
430: drAr.clickMouse(a.x, a.y, 1);
431: dEl.waitSelection(false);
432: //
433: dEl.clickOnCenter();
434: dEl.waitSelection(true);
435: //
436: java.awt.Robot rbt = null;
437: try {
438: rbt = new java.awt.Robot();
439: } catch (Exception ex) {
440: }
441: rbt.keyPress(KeyEvent.VK_DELETE);
442: rbt.keyRelease(KeyEvent.VK_DELETE);
443: //Action.Shortcut shtc=new Action.Shortcut(KeyEvent.VK_DELETE);
444: //new Action(null,null,shtc).performShortcut();
445: //
446: JDialogOperator delDlg = new JDialogOperator("Delete");
447: try {
448: Thread.sleep(1000);
449: } catch (Exception ex) {
450: }
451: delDlg.waitComponentShowing(true);
452: JCheckBoxOperator chk = null;
453: try {
454: chk = new JCheckBoxOperator(delDlg);
455:
456: } catch (org.netbeans.jemmy.TimeoutExpiredException ex) {
457: assertFalse(
458: 89274,
459: "There is option for deletion/or not deletion from project",
460: elementType.equals(elementType5)
461: || elementType.equals(elementType8)
462: || elementType.equals(elementType9)
463: || elementType.equals(elementType12));
464: throw ex;
465: }
466: chk.waitComponentShowing(true);
467: if (!chk.isSelected())
468: chk.clickMouse();
469: chk.waitSelected(true);
470: new JButtonOperator(delDlg, "Yes").pushNoBlock();
471: //
472: assertTrue("Element wasn't deleted frm diagram", dEl
473: .waitForDeletion(d,
474: new DiagramElementOperator.ElementByVNChooser(
475: newName, elementType), 0));
476: //
477: elNode.waitNotPresent();
478: }
479:
480: private void testElementPlaceAndDelete(String workPkg,
481: String diagramName, String element, String elementName,
482: ElementTypes elementType) {
483: testElementPlaceAndDelete(workPkg, diagramName, element,
484: elementName, elementType, "ElName");
485: }
486:
487: }
|