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