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