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.InputEvent;
045: import java.awt.event.KeyEvent;
046: import javax.swing.JMenuItem;
047: import javax.swing.JPopupMenu;
048: import org.netbeans.jellytools.MainWindowOperator;
049: import org.netbeans.jellytools.ProjectsTabOperator;
050: import org.netbeans.jellytools.nodes.Node;
051: import org.netbeans.jellytools.properties.PropertySheetOperator;
052: import org.netbeans.jemmy.EventTool;
053: import org.netbeans.jemmy.operators.JButtonOperator;
054: import org.netbeans.jemmy.operators.JCheckBoxOperator;
055: import org.netbeans.jemmy.operators.JComboBoxOperator;
056: import org.netbeans.jemmy.operators.JDialogOperator;
057: import org.netbeans.jemmy.operators.JMenuItemOperator;
058: import org.netbeans.jemmy.operators.JPopupMenuOperator;
059: import org.netbeans.jemmy.operators.JTreeOperator;
060:
061: import org.netbeans.junit.NbTestSuite; //import qa.uml.UMLClassOperator;
062: import org.netbeans.test.umllib.DiagramElementOperator;
063: import org.netbeans.test.umllib.DiagramOperator;
064: import org.netbeans.test.umllib.DrawingAreaOperator;
065: import org.netbeans.test.umllib.ElementTypes;
066: import org.netbeans.test.umllib.LinkOperator;
067: import org.netbeans.test.umllib.LinkTypes;
068: import org.netbeans.test.umllib.NewDiagramWizardOperator;
069: import org.netbeans.test.umllib.UMLPaletteOperator;
070: import org.netbeans.test.umllib.testcases.UMLTestCase;
071: import org.netbeans.test.umllib.util.LibProperties;
072:
073: /**
074: *
075: * @author psb
076: * @spec uml/UML-EditControl.xml
077: */
078: public class TestComponentElement extends UMLTestCase {
079:
080: //some system properties
081: private static String contextPropItemName = "Properties";
082: private static String umlPropertyWindowTitle = "Project Properties";
083: private static String umlSourcePackagesLabel = "Source Packages";
084: private static String umlSourcePackagesColumn = "Folder Label";
085: private static String umlSourceUsageColumn = "Model?";
086: private static String mainTreeTabName = "Projects";
087: //common test properties
088: private static String prName = "componentDiagramProjectTC";
089: private static String project = prName + "|Model";
090: private static String sourceProject = "source";
091: private static boolean codeSync = false;
092: private static String defaultNewElementName = org.netbeans.test.uml.componentdiagram.utils.Utils.defaultNewElementName;
093: private static String defaultReturnType = org.netbeans.test.uml.componentdiagram.utils.Utils.defaultReturnType;
094: private static String defaultAttributeType = org.netbeans.test.uml.componentdiagram.utils.Utils.defaultAttributeType;
095: private static String defaultAttributeVisibility = org.netbeans.test.uml.componentdiagram.utils.Utils.defaultAttributeVisibility;
096: private static String defaultOperationVisibility = org.netbeans.test.uml.componentdiagram.utils.Utils.defaultOperationVisibility;
097: private ProjectsTabOperator pto = null;
098: private Node lastDiagramNode = null;
099: private JTreeOperator prTree = null;
100: private static String workdir = System.getProperty("xtest.workdir");
101: private String lastTestCase = null;
102: //--
103: private static String componentDiagramName1 = "cpD1";
104: private static String workPkg1 = "pkg1";
105: private static String element1 = "Generalization";
106: private static String treeNode1 = element1;
107: private static String elementName1 = "";
108: private static LinkTypes elementType1 = LinkTypes.GENERALIZATION;
109: private static ElementTypes fromType1 = ElementTypes.CLASS;
110: private static ElementTypes toType1 = ElementTypes.CLASS;
111: private static boolean eIO1 = false;
112: //--
113: private static String componentDiagramName2 = "cpD2";
114: private static String workPkg2 = "pkg2";
115: private static String element2 = "Implementation";
116: private static String treeNode2 = element2;
117: private static String elementName2 = "";
118: private static LinkTypes elementType2 = LinkTypes.IMPLEMENTATION;
119: private static ElementTypes fromType2 = ElementTypes.CLASS;
120: private static ElementTypes toType2 = ElementTypes.INTERFACE;
121: private static boolean eIO2 = false;
122: //--
123: //SPECIAL CASE
124: private static String componentDiagramName3 = "cpD3";
125: private static String workPkg3 = "pkg3";
126: private static String element3 = "Nested Link";
127: private static String treeNode3 = element3;
128: private static String elementName3 = defaultNewElementName;
129: private static LinkTypes elementType3 = LinkTypes.NESTED_LINK;
130: private static ElementTypes fromType3 = ElementTypes.CLASS;
131: private static ElementTypes toType3 = ElementTypes.CLASS;
132: private static boolean eIO3 = false;
133: //--
134: private static String componentDiagramName4 = "cpD4";
135: private static String workPkg4 = "pkg4";
136: private static String element4 = "Delegate";
137: private static String treeNode4 = element4;
138: private static String elementName4 = "";
139: private static LinkTypes elementType4 = LinkTypes.DELEGATE;
140: private static ElementTypes fromType4 = ElementTypes.CLASS;
141: private static ElementTypes toType4 = ElementTypes.COMPONENT;
142: private static boolean eIO4 = false;
143: //--
144: //SPECIAL CASE
145: /*private static String componentDiagramName5 = "cpD5";
146: private static String workPkg5 = "pkg5";
147: private static String element5="Assembly Connector";
148: private static String treeNode5=element5;
149: private static String elementName5="";
150: private static LinkTypes elementType5=LinkTypes.USAGE;
151: private static ElementTypes fromType5=ElementTypes.COMPONENT;
152: private static ElementTypes toType5=ElementTypes.INTERFACE;
153: private static boolean eIO5=false;*/
154: //--
155: private static String componentDiagramName6 = "cpD6";
156: private static String workPkg6 = "pkg6";
157: private static String element6 = "Derivation Edge";
158: private static String treeNode6 = element6;
159: private static String elementName6 = "";
160: private static LinkTypes elementType6 = LinkTypes.DERIVATION_EDGE;
161: private static ElementTypes fromType6 = ElementTypes.DERIVATION_CLASSIFIER;
162: private static ElementTypes toType6 = ElementTypes.TEMPLATE_CLASS;
163: private static boolean eIO6 = false;
164: //--
165: private static String componentDiagramName7 = "cpD7";
166: private static String workPkg7 = "pkg7";
167: private static String element7 = "Association";
168: private static String treeNode7 = element7;
169: private static String elementName7 = "";
170: private static LinkTypes elementType7 = LinkTypes.ASSOCIATION;
171: private static ElementTypes fromType7 = ElementTypes.COMPONENT;
172: private static ElementTypes toType7 = ElementTypes.CLASS;
173: private static boolean eIO7 = false;
174: //--
175: private static String componentDiagramName8 = "cpD8";
176: private static String workPkg8 = "pkg8";
177: private static String element8 = "Composition";
178: private static String treeNode8 = element8;
179: private static String elementName8 = "";
180: private static LinkTypes elementType8 = LinkTypes.COMPOSITION;
181: private static ElementTypes fromType8 = ElementTypes.COMPONENT;
182: private static ElementTypes toType8 = ElementTypes.CLASS;
183: private static boolean eIO8 = false;
184: //--
185: private static String componentDiagramName9 = "cpD9";
186: private static String workPkg9 = "pkg9";
187: private static String element9 = "Navigable Composition";
188: private static String treeNode9 = "Composition";
189: private static String elementName9 = "";
190: private static LinkTypes elementType9 = LinkTypes.NAVIGABLE_COMPOSITION;
191: private static ElementTypes fromType9 = ElementTypes.COMPONENT;
192: private static ElementTypes toType9 = ElementTypes.CLASS;
193: private static boolean eIO9 = false;
194: //--
195: private static String componentDiagramName10 = "cpD10";
196: private static String workPkg10 = "pkg10";
197: private static String element10 = "Aggregation";
198: private static String treeNode10 = element10;
199: private static String elementName10 = "";
200: private static LinkTypes elementType10 = LinkTypes.AGGREGATION;
201: private static ElementTypes fromType10 = ElementTypes.COMPONENT;
202: private static ElementTypes toType10 = ElementTypes.CLASS;
203: private static boolean eIO10 = false;
204: //--
205: private static String componentDiagramName11 = "cpD11";
206: private static String workPkg11 = "pkg11";
207: private static String element11 = "Navigable Aggregation";
208: private static String treeNode11 = element11;
209: private static String elementName11 = "";
210: private static LinkTypes elementType11 = LinkTypes.NAVIGABLE_AGGREGATION;
211: private static ElementTypes fromType11 = ElementTypes.COMPONENT;
212: private static ElementTypes toType11 = ElementTypes.CLASS;
213: private static boolean eIO11 = false;
214: //--
215: private static String componentDiagramName12 = "cpD12";
216: private static String workPkg12 = "pkg12";
217: private static String element12 = "Navigable Association";
218: private static String treeNode12 = element12;
219: private static String elementName12 = "";
220: private static LinkTypes elementType12 = LinkTypes.NAVIGABLE_ASSOCIATION;
221: private static ElementTypes fromType12 = ElementTypes.COMPONENT;
222: private static ElementTypes toType12 = ElementTypes.CLASS;
223: private static boolean eIO12 = false;
224:
225: //--
226: //SPECIAL CASE
227: /*private static String componentDiagramName13 = "cpD13";
228: private static String workPkg13 = "pkg13";
229: private static String element13="Association Class";
230: private static String treeNode13=element13;
231: private static String elementName13="";
232: private static LinkTypes elementType13=LinkTypes.ASSOCIATION_CLASS;
233: private static ElementTypes fromType13=ElementTypes.COMPONENT;
234: private static ElementTypes toType13=ElementTypes.CLASS;
235: private static boolean eIO13=false;*/
236: //--
237: //Special case
238: /* private static String componentDiagramName14 = "cpD14";
239: private static String workPkg14 = "pkg14";
240: private static String element14="Role Binding";
241: private static String treeNode14=element14;
242: private static String elementName14=defaultNewElementName;
243: private static LinkTypes elementType14=LinkTypes.ROLE_BINDING;
244: private static ElementTypes fromType14=ElementTypes.DESIGN_PATTERN;
245: private static ElementTypes toType14=ElementTypes.ACTOR_ROLE;
246: private static boolean eIO14=false;*/
247: //--
248: //Special case
249: /*private static String componentDiagramName15 = "cpD15";
250: private static String workPkg15 = "pkg15";
251: private static String element15="Link Comment";
252: private static String treeNode15=element15;
253: private static String elementName15="";
254: private static LinkTypes elementType15=LinkTypes.LINK_COMMENT;
255: private static ElementTypes fromType14=ElementTypes.CLASS;
256: private static ElementTypes toType14=ElementTypes.COMMENT;
257: private static boolean eIO14=false;*/
258:
259: /** Need to be defined because of JUnit */
260: public TestComponentElement(String name) {
261: super (name);
262: }
263:
264: public static NbTestSuite suite() {
265: NbTestSuite suite = new NbTestSuite(
266: org.netbeans.test.uml.componentdiagram.TestComponentElement.class);
267: return suite;
268: }
269:
270: private DiagramOperator createOrOpenDiagram(String project,
271: String workPkg, String diagram) {
272: //
273: org.netbeans.test.umllib.Utils.RetAll rt = org.netbeans.test.umllib.Utils
274: .createOrOpenDiagram(project, workPkg, diagram,
275: NewDiagramWizardOperator.COMPONENT_DIAGRAM);
276: pto = rt.pto;
277: prTree = new JTreeOperator(pto);
278: lastDiagramNode = rt.lastDiagramNode;
279: return rt.dOp;
280: }
281:
282: public void testCreateAssemblyConnector() {
283: lastTestCase = getCurrentTestMethodName();
284: //
285: DiagramOperator d = createOrOpenDiagram(project, workPkg1,
286: "cpD_1");
287: JComboBoxOperator zoomCombo = new JComboBoxOperator(d);
288: zoomCombo.waitComponentShowing(true);
289: try {
290: zoomCombo.waitComponentEnabled();
291: } catch (InterruptedException ex) {
292: ex.printStackTrace();
293: }
294: zoomCombo.selectItem("200%");
295: new EventTool().waitNoEvent(500);
296: //
297: Node pkgNode = new Node(prTree, lastDiagramNode.getParentPath());
298: int numChild = pkgNode.getChildren().length;
299: //
300: UMLPaletteOperator pl = new UMLPaletteOperator();
301: DrawingAreaOperator drAr = d.getDrawingArea();
302: //
303: java.awt.Point a = drAr.getFreePoint();
304: DiagramElementOperator dECmp = d.putElementOnDiagram(
305: "MainCompnent1", ElementTypes.COMPONENT, a.x, a.y);
306: Node cmpNode = new Node(pkgNode, "MainCompnent1");
307: pl.selectTool(LibProperties
308: .getCurrentToolName(ElementTypes.ASSEMBLY_CONNECTOR));
309: drAr.clickMouse(dECmp.getCenterPoint().x, dECmp
310: .getCenterPoint().y + 10, 1);
311: a = drAr.getFreePoint(150);
312: drAr.clickMouse(a.x, a.y, 1);
313: drAr.pushKey(KeyEvent.VK_ESCAPE);
314: //try to find interface
315: DiagramElementOperator dE2 = new DiagramElementOperator(d,
316: LibProperties
317: .getCurrentDefaultName(ElementTypes.INTERFACE),
318: ElementTypes.INTERFACE);
319: Node intNode = new Node(pkgNode, LibProperties
320: .getCurrentDefaultName(ElementTypes.INTERFACE));
321: //check port
322: DiagramElementOperator dE3 = new DiagramElementOperator(d,
323: LibProperties.getCurrentDefaultName(ElementTypes.PORT),
324: ElementTypes.PORT);
325: Node portNode = new Node(cmpNode, ElementTypes.PORT.toString());
326: dE3.select();
327: PropertySheetOperator pso = new PropertySheetOperator(
328: ElementTypes.PORT + " - Properties");
329: //link
330: LinkOperator usagelink = new LinkOperator(dE3, dE2,
331: LinkTypes.USAGE);
332: //relations
333: Node tmp1 = new Node(intNode, "Relationships");
334: Node tmp2 = new Node(tmp1, LibProperties
335: .getCurrentToolName(LinkTypes.USAGE));
336: Node tmp3 = new Node(tmp2, ElementTypes.PORT.toString());
337: //-
338: tmp1 = new Node(portNode, "Required Interfaces");
339: tmp2 = new Node(tmp1, LibProperties
340: .getCurrentDefaultName(ElementTypes.INTERFACE));
341: }
342:
343: public void testMUltiLinkAndPopup() {
344: lastTestCase = getCurrentTestMethodName();
345: //
346: DiagramOperator d = createOrOpenDiagram(project, workPkg2,
347: "cpD_2");
348: new JComboBoxOperator(d).selectItem("200%");
349: new EventTool().waitNoEvent(500);
350: //
351: Node pkgNode = new Node(prTree, lastDiagramNode.getParentPath());
352: int numChild = pkgNode.getChildren().length;
353: //
354: UMLPaletteOperator pl = new UMLPaletteOperator();
355: DrawingAreaOperator drAr = d.getDrawingArea();
356: //
357: java.awt.Point a = drAr.getFreePoint();
358: DiagramElementOperator dECmp = d.putElementOnDiagram(
359: "MainCompnent1", ElementTypes.COMPONENT, a.x, a.y);
360: Node cmpNode = new Node(pkgNode, "MainCompnent1");
361: pl.selectTool(LibProperties
362: .getCurrentToolName(ElementTypes.ASSEMBLY_CONNECTOR));
363: drAr.clickMouse(dECmp.getCenterPoint().x, dECmp
364: .getCenterPoint().y + 10, 1);
365: a = drAr.getFreePoint(150);
366: drAr.clickMouse(a.x, a.y, 1);
367: drAr.pushKey(KeyEvent.VK_ESCAPE);
368: //try to find interface
369: DiagramElementOperator dE2 = new DiagramElementOperator(d,
370: LibProperties
371: .getCurrentDefaultName(ElementTypes.INTERFACE),
372: ElementTypes.INTERFACE);
373: Node intNode = new Node(pkgNode, LibProperties
374: .getCurrentDefaultName(ElementTypes.INTERFACE));
375: intNode.select();
376: PropertySheetOperator pso = new PropertySheetOperator(
377: LibProperties
378: .getCurrentDefaultName(ElementTypes.INTERFACE)
379: + " - Properties");
380: org.netbeans.test.uml.componentdiagram.utils.Utils
381: .setTextProperty("Name", "INT1");
382: //check ports
383: DiagramElementOperator dE3 = new DiagramElementOperator(d,
384: LibProperties.getCurrentDefaultName(ElementTypes.PORT),
385: ElementTypes.PORT);
386: Node portNode = new Node(cmpNode, ElementTypes.PORT.toString());
387: dE3.select();
388: pso = new PropertySheetOperator(ElementTypes.PORT
389: + " - Properties");
390: org.netbeans.test.uml.componentdiagram.utils.Utils
391: .setTextProperty("Name", "PORT1");
392: portNode = new Node(cmpNode, "PORT1");
393: dE3 = new DiagramElementOperator(d, "PORT1", ElementTypes.PORT);
394: //2
395: pl.selectTool(LibProperties
396: .getCurrentToolName(ElementTypes.ASSEMBLY_CONNECTOR));
397: drAr.clickMouse(dECmp.getCenterPoint().x + 20, dECmp
398: .getCenterPoint().y + 10, 1);
399: a = drAr.getFreePoint(150);
400: drAr.clickMouse(a.x, a.y, 1);
401: drAr.pushKey(KeyEvent.VK_ESCAPE);
402: //try to find interface
403: DiagramElementOperator dE22 = new DiagramElementOperator(d,
404: LibProperties
405: .getCurrentDefaultName(ElementTypes.INTERFACE),
406: ElementTypes.INTERFACE);
407: Node intNode2 = new Node(pkgNode, LibProperties
408: .getCurrentDefaultName(ElementTypes.INTERFACE));
409: intNode2.select();
410: pso = new PropertySheetOperator(LibProperties
411: .getCurrentDefaultName(ElementTypes.INTERFACE)
412: + " - Properties");
413: org.netbeans.test.uml.componentdiagram.utils.Utils
414: .setTextProperty("Name", "INT2");
415: dE3 = new DiagramElementOperator(d, LibProperties
416: .getCurrentDefaultName(ElementTypes.PORT),
417: ElementTypes.PORT);
418: portNode = new Node(cmpNode, ElementTypes.PORT.toString());
419: dE3.select();
420: pso = new PropertySheetOperator(ElementTypes.PORT
421: + " - Properties");
422: org.netbeans.test.uml.componentdiagram.utils.Utils
423: .setTextProperty("Name", "PORT2");
424: //link
425: dE3 = new DiagramElementOperator(d, "PORT1", ElementTypes.PORT);
426: dE2 = new DiagramElementOperator(d, "INT1");
427: LinkOperator usagelink = new LinkOperator(dE3, dE2,
428: LinkTypes.USAGE);
429: dE3 = new DiagramElementOperator(d, "PORT2", ElementTypes.PORT);
430: dE2 = new DiagramElementOperator(d, "INT2");
431: usagelink = new LinkOperator(dE3, dE2, LinkTypes.USAGE);
432: //relations
433: intNode = new Node(pkgNode, "INT1");
434: Node tmp1 = new Node(intNode, "Relationships");
435: Node tmp2 = new Node(tmp1, LibProperties
436: .getCurrentToolName(LinkTypes.USAGE));
437: Node tmp3 = new Node(tmp2, "PORT1");
438: //-
439: portNode = new Node(cmpNode, "PORT1");
440: tmp1 = new Node(portNode, "Required Interfaces");
441: tmp2 = new Node(tmp1, "INT1");
442: //
443: intNode = new Node(pkgNode, "INT2");
444: tmp1 = new Node(intNode, "Relationships");
445: tmp2 = new Node(tmp1, LibProperties
446: .getCurrentToolName(LinkTypes.USAGE));
447: tmp3 = new Node(tmp2, "PORT2");
448: //-
449: portNode = new Node(cmpNode, "PORT2");
450: tmp1 = new Node(portNode, "Required Interfaces");
451: tmp2 = new Node(tmp1, "INT2");
452: //popup
453: JPopupMenuOperator popM = dECmp.getPopup();
454: popM.waitComponentShowing(true);
455: JMenuItemOperator miOp = new JMenuItemOperator(popM
456: .pushMenu("Ports"));
457: miOp.waitSelected(true);
458: JPopupMenu chM = (javax.swing.JPopupMenu) (miOp
459: .getSubElements()[0]);
460: assertTrue("There is not 2 ports in Ports submenu", chM
461: .getSubElements().length == 2);
462: assertTrue("There is no PORT1 in Ports submenu",
463: ((JMenuItem) (chM.getSubElements()[0])).getText()
464: .equals("PORT1"));
465: assertTrue("There is no PORT2 in Ports submenu",
466: ((JMenuItem) (chM.getSubElements()[1])).getText()
467: .equals("PORT2"));
468: popM.pushKey(KeyEvent.VK_ESCAPE);
469: popM.waitComponentVisible(false);
470: popM = dECmp.getPopup();
471: popM.waitComponentShowing(true);
472: miOp = new JMenuItemOperator(popM.pushMenu("Port Location"));
473: chM = (javax.swing.JPopupMenu) (miOp.getSubElements()[0]);
474: assertTrue("There is not 4 positions in Port Location submenu",
475: chM.getSubElements().length == 4);
476: assertTrue("There is no Top in Port Location submenu",
477: ((JMenuItem) (chM.getSubElements()[0])).getText()
478: .equals("Top"));
479: assertTrue("There is no Bottom in Port Location submenu",
480: ((JMenuItem) (chM.getSubElements()[1])).getText()
481: .equals("Bottom"));
482: assertTrue("There is no Left in Port Location submenu",
483: ((JMenuItem) (chM.getSubElements()[2])).getText()
484: .equals("Left"));
485: assertTrue("There is no Right in Port Location submenu",
486: ((JMenuItem) (chM.getSubElements()[3])).getText()
487: .equals("Right"));
488: popM.pushKey(KeyEvent.VK_ESCAPE);
489: popM.waitComponentVisible(false);
490: dECmp.getPopup().pushMenu("Evenly Distribute Port Interfaces");
491: }
492:
493: public void testRemoveAssemblyConnectorDel() {
494: lastTestCase = getCurrentTestMethodName();
495: //
496: DiagramOperator d = createOrOpenDiagram(project, workPkg3,
497: "cpD_3");
498: new JComboBoxOperator(d).selectItem("200%");
499: new EventTool().waitNoEvent(500);
500: //
501: Node pkgNode = new Node(prTree, lastDiagramNode.getParentPath());
502: int numChild = pkgNode.getChildren().length;
503: //
504: UMLPaletteOperator pl = new UMLPaletteOperator();
505: DrawingAreaOperator drAr = d.getDrawingArea();
506: //
507: java.awt.Point a = drAr.getFreePoint();
508: DiagramElementOperator dECmp = d.putElementOnDiagram(
509: "MainCompnent1", ElementTypes.COMPONENT, a.x, a.y);
510: Node cmpNode = new Node(pkgNode, "MainCompnent1");
511: pl.selectTool(LibProperties
512: .getCurrentToolName(ElementTypes.ASSEMBLY_CONNECTOR));
513: drAr.clickMouse(dECmp.getCenterPoint().x, dECmp
514: .getCenterPoint().y + 10, 1);
515: a = drAr.getFreePoint(150);
516: drAr.clickMouse(a.x, a.y, 1);
517: drAr.pushKey(KeyEvent.VK_ESCAPE);
518: //try to find interface
519: DiagramElementOperator dE2 = new DiagramElementOperator(d,
520: LibProperties
521: .getCurrentDefaultName(ElementTypes.INTERFACE),
522: ElementTypes.INTERFACE);
523: DiagramElementOperator dE3 = new DiagramElementOperator(d,
524: LibProperties.getCurrentDefaultName(ElementTypes.PORT),
525: ElementTypes.PORT);
526: Node portNode = new Node(cmpNode, ElementTypes.PORT.toString());
527: LinkOperator usagelink = new LinkOperator(dE3, dE2,
528: LinkTypes.USAGE);
529: usagelink.select();
530: //invoke Delete key
531: drAr.pushKey(KeyEvent.VK_DELETE);
532: JDialogOperator delDlg = new JDialogOperator("Delete");
533: try {
534: Thread.sleep(1000);
535: } catch (Exception ex) {
536: }
537: delDlg.waitComponentShowing(true);
538: JCheckBoxOperator chk = new JCheckBoxOperator(delDlg);
539: chk.waitComponentShowing(true);
540: if (!chk.isSelected())
541: chk.clickMouse();
542: chk.waitSelected(true);
543: new JButtonOperator(delDlg, "Yes").pushNoBlock();
544: dE2 = new DiagramElementOperator(d, LibProperties
545: .getCurrentDefaultName(ElementTypes.INTERFACE),
546: ElementTypes.INTERFACE);
547: Node intNode = new Node(pkgNode, LibProperties
548: .getCurrentDefaultName(ElementTypes.INTERFACE));
549: //check port
550: dE3 = new DiagramElementOperator(d, LibProperties
551: .getCurrentDefaultName(ElementTypes.PORT),
552: ElementTypes.PORT);
553: portNode = new Node(cmpNode, ElementTypes.PORT.toString());
554: dE3.select();
555: PropertySheetOperator pso = new PropertySheetOperator(
556: ElementTypes.PORT + " - Properties");
557: //link
558: try {
559: usagelink = new LinkOperator(dE3, dE2, LinkTypes.USAGE);
560: fail("Link Remains on diagram");
561: } catch (Exception e) {//good
562:
563: }
564: //relations
565: Node tmp1 = null;
566: if (intNode.isChildPresent("Relationships"))
567: tmp1 = new Node(intNode, "Relationships");
568: Node tmp2 = null;
569: assertFalse("Usage link remains within interface node",
570: tmp1 != null
571: && tmp1.isChildPresent(LibProperties
572: .getCurrentToolName(LinkTypes.USAGE)));
573: //-
574: tmp1 = null;
575: if (portNode.isChildPresent("Required Interfaces"))
576: tmp1 = new Node(portNode, "Required Interfaces");
577: assertFalse(
578: 78854,
579: "Required Unnamed interface remains within Port node",
580: tmp1 != null
581: && tmp1
582: .isChildPresent(LibProperties
583: .getCurrentDefaultName(ElementTypes.INTERFACE)));
584: }
585:
586: public void testRemoveAssemblyConnectorContext() {
587: lastTestCase = getCurrentTestMethodName();
588: //
589: DiagramOperator d = createOrOpenDiagram(project, workPkg4,
590: "cpD_4");
591: new JComboBoxOperator(d).selectItem("200%");
592: new EventTool().waitNoEvent(500);
593: //
594: Node pkgNode = new Node(prTree, lastDiagramNode.getParentPath());
595: int numChild = pkgNode.getChildren().length;
596: //
597: UMLPaletteOperator pl = new UMLPaletteOperator();
598: DrawingAreaOperator drAr = d.getDrawingArea();
599: //
600: java.awt.Point a = drAr.getFreePoint();
601: DiagramElementOperator dECmp = d.putElementOnDiagram(
602: "MainCompnent1", ElementTypes.COMPONENT, a.x, a.y);
603: Node cmpNode = new Node(pkgNode, "MainCompnent1");
604: pl.selectTool(LibProperties
605: .getCurrentToolName(ElementTypes.ASSEMBLY_CONNECTOR));
606: drAr.clickMouse(dECmp.getCenterPoint().x, dECmp
607: .getCenterPoint().y + 10, 1);
608: a = drAr.getFreePoint(150);
609: drAr.clickMouse(a.x, a.y, 1);
610: drAr.pushKey(KeyEvent.VK_ESCAPE);
611: //try to find interface
612: DiagramElementOperator dE2 = new DiagramElementOperator(d,
613: LibProperties
614: .getCurrentDefaultName(ElementTypes.INTERFACE),
615: ElementTypes.INTERFACE);
616: dE2 = new DiagramElementOperator(d, LibProperties
617: .getCurrentDefaultName(ElementTypes.INTERFACE),
618: ElementTypes.INTERFACE);
619: Node intNode = new Node(pkgNode, LibProperties
620: .getCurrentDefaultName(ElementTypes.INTERFACE));
621: //check port
622: DiagramElementOperator dE3 = new DiagramElementOperator(d,
623: LibProperties.getCurrentDefaultName(ElementTypes.PORT),
624: ElementTypes.PORT);
625: Node portNode = new Node(cmpNode, ElementTypes.PORT.toString());
626: //dE3.select();
627: java.awt.Point tmpP = dE3.getCenterPoint();
628: tmpP.translate(0, -3);
629: dE3.clickOn(tmpP, 1, InputEvent.BUTTON1_MASK, 0);
630: dE3.waitSelection(true);
631: PropertySheetOperator pso = new PropertySheetOperator(
632: ElementTypes.PORT + " - Properties");
633: LinkOperator usagelink = new LinkOperator(dE3, dE2,
634: LinkTypes.USAGE);
635: //invoke Delete key
636: JPopupMenuOperator popM = usagelink.getPopup();
637: // try{Thread.sleep(5000);}catch(Exception ex){}
638: popM.showMenuItem("Edit|Delete").pushNoBlock();
639: JDialogOperator delDlg = new JDialogOperator("Delete");
640: try {
641: Thread.sleep(1000);
642: } catch (Exception ex) {
643: }
644: delDlg.waitComponentShowing(true);
645: JCheckBoxOperator chk = new JCheckBoxOperator(delDlg);
646: chk.waitComponentShowing(true);
647: if (!chk.isSelected())
648: chk.clickMouse();
649: chk.waitSelected(true);
650: new JButtonOperator(delDlg, "Yes").pushNoBlock();
651: delDlg.waitClosed();
652: try {
653: Thread.sleep(100);
654: } catch (Exception ex) {
655: }
656: //link
657: try {
658: usagelink = new LinkOperator(dE3, dE2, LinkTypes.USAGE);
659: fail("Link Remains on diagram");
660: } catch (Exception e) {//good
661:
662: }
663: //relations
664: Node tmp1 = null;
665: if (intNode.isChildPresent("Relationships"))
666: tmp1 = new Node(intNode, "Relationships");
667: Node tmp2 = null;
668: assertFalse("Usage link remains within interface node",
669: tmp1 != null
670: && tmp1.isChildPresent(LibProperties
671: .getCurrentToolName(LinkTypes.USAGE)));
672: //-
673: tmp1 = null;
674: if (portNode.isChildPresent("Required Interfaces"))
675: tmp1 = new Node(portNode, "Required Interfaces");
676: assertFalse(
677: 78854,
678: "Required Unnamed interface remains within Port node",
679: tmp1 != null
680: && tmp1
681: .isChildPresent(LibProperties
682: .getCurrentDefaultName(ElementTypes.INTERFACE)));
683: }
684:
685: public void setUp() {
686: System.out.println("######## " + getName() + " #######");
687: pto = ProjectsTabOperator.invoke();
688: if (!codeSync) {
689: org.netbeans.test.uml.componentdiagram.utils.Utils
690: .commonComponentDiagramSetup(workdir, prName);
691: //
692: codeSync = true;
693: }
694:
695: }
696:
697: public void tearDown() {
698: org.netbeans.test.umllib.util.Utils
699: .makeScreenShot(lastTestCase);
700: //popup protection
701: MainWindowOperator.getDefault().pushKey(KeyEvent.VK_ESCAPE);
702: new EventTool().waitNoEvent(1000);
703: //
704: closeAllModal();
705: org.netbeans.test.umllib.util.Utils.saveAll();
706: if (lastDiagramNode != null) {
707: lastDiagramNode.collapse();
708: new Node(lastDiagramNode.tree(), lastDiagramNode
709: .getParentPath()).collapse();
710: }
711: try {
712: DiagramOperator d = new DiagramOperator("cpD");
713: d.closeAllDocuments();
714: d.waitClosed();
715: new EventTool().waitNoEvent(1000);
716: } catch (Exception ex) {
717: }
718: ;
719: closeAllModal();
720: //save
721: org.netbeans.test.umllib.util.Utils.tearDown();
722: }
723:
724: }
|