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.JCheckBoxOperator;
052: import org.netbeans.jemmy.operators.JDialogOperator;
053: import org.netbeans.jemmy.operators.JTreeOperator;
054:
055: import org.netbeans.junit.NbTestSuite; //import qa.uml.UMLClassOperator;
056: import org.netbeans.test.umllib.DiagramElementOperator;
057: import org.netbeans.test.umllib.DiagramOperator;
058: import org.netbeans.test.umllib.DrawingAreaOperator;
059: import org.netbeans.test.umllib.ElementTypes;
060: import org.netbeans.test.umllib.LinkOperator;
061: import org.netbeans.test.umllib.LinkTypes;
062: import org.netbeans.test.umllib.UMLPaletteOperator;
063: import org.netbeans.test.umllib.exceptions.NotFoundException;
064: import org.netbeans.test.umllib.testcases.UMLTestCase;
065:
066: /**
067: *
068: * @author psb
069: * @spec uml/UML-EditControl.xml
070: */
071: public class PlaceDeleteLinksByDel extends UMLTestCase {
072:
073: //some system properties
074: private static String contextPropItemName = "Properties";
075: private static String umlPropertyWindowTitle = "Project Properties";
076: private static String umlSourcePackagesLabel = "Source Packages";
077: private static String umlSourcePackagesColumn = "Folder Label";
078: private static String umlSourceUsageColumn = "Model?";
079: private static String mainTreeTabName = "Projects";
080: //common test properties
081: private static String prName = "componentDiagramProjectLDK";
082: private static String project = prName + "|Model";
083: private static String sourceProject = "source";
084: private static boolean codeSync = false;
085: private static String defaultNewElementName = org.netbeans.test.uml.componentdiagram.utils.Utils.defaultNewElementName;
086: private static String defaultReturnType = org.netbeans.test.uml.componentdiagram.utils.Utils.defaultReturnType;
087: private static String defaultAttributeType = org.netbeans.test.uml.componentdiagram.utils.Utils.defaultAttributeType;
088: private static String defaultAttributeVisibility = org.netbeans.test.uml.componentdiagram.utils.Utils.defaultAttributeVisibility;
089: private static String defaultOperationVisibility = org.netbeans.test.uml.componentdiagram.utils.Utils.defaultOperationVisibility;
090: private ProjectsTabOperator pto = null;
091: private Node lastDiagramNode = null;
092: private JTreeOperator prTree = null;
093: private static String workdir = System.getProperty("xtest.workdir");
094: private String lastTestCase = null;
095: //--
096: private static String componentDiagramName1 = "cpD1";
097: private static String workPkg1 = "pkg1";
098: private static String element1 = "Generalization";
099: private static String treeNode1 = element1;
100: private static String elementName1 = "";
101: private static LinkTypes elementType1 = LinkTypes.GENERALIZATION;
102: private static ElementTypes fromType1 = ElementTypes.CLASS;
103: private static ElementTypes toType1 = ElementTypes.CLASS;
104: private static boolean eIO1 = false;
105: //--
106: private static String componentDiagramName2 = "cpD2";
107: private static String workPkg2 = "pkg2";
108: private static String element2 = "Implementation";
109: private static String treeNode2 = element2;
110: private static String elementName2 = "";
111: private static LinkTypes elementType2 = LinkTypes.IMPLEMENTATION;
112: private static ElementTypes fromType2 = ElementTypes.CLASS;
113: private static ElementTypes toType2 = ElementTypes.INTERFACE;
114: private static boolean eIO2 = false;
115: //--
116: //SPECIAL CASE
117: /* private static String componentDiagramName3 = "cpD3";
118: private static String workPkg3 = "pkg3";
119: private static String element3="Nested Link";
120: private static String treeNode3=element3;
121: private static String elementName3=defaultNewElementName;
122: private static LinkTypes elementType3=LinkTypes.NESTED_LINK;
123: private static ElementTypes fromType3=ElementTypes.CLASS;
124: private static ElementTypes toType3=ElementTypes.CLASS;
125: private static boolean eIO3=false;*/
126: //--
127: private static String componentDiagramName4 = "cpD4";
128: private static String workPkg4 = "pkg4";
129: private static String element4 = "Delegate";
130: private static String treeNode4 = element4;
131: private static String elementName4 = "";
132: private static LinkTypes elementType4 = LinkTypes.DELEGATE;
133: private static ElementTypes fromType4 = ElementTypes.CLASS;
134: private static ElementTypes toType4 = ElementTypes.COMPONENT;
135: private static boolean eIO4 = false;
136: //--
137: //SPECIAL CASE
138: /*private static String componentDiagramName5 = "cpD5";
139: private static String workPkg5 = "pkg5";
140: private static String element5="Assembly Connector";
141: private static String treeNode5=element5;
142: private static String elementName5="";
143: private static LinkTypes elementType5=LinkTypes.USAGE;
144: private static ElementTypes fromType5=ElementTypes.COMPONENT;
145: private static ElementTypes toType5=ElementTypes.INTERFACE;
146: private static boolean eIO5=false;*/
147: //--
148: private static String componentDiagramName6 = "cpD6";
149: private static String workPkg6 = "pkg6";
150: private static String element6 = "Derivation Edge";
151: private static String treeNode6 = element6;
152: private static String elementName6 = "";
153: private static LinkTypes elementType6 = LinkTypes.DERIVATION_EDGE;
154: private static ElementTypes fromType6 = ElementTypes.DERIVATION_CLASSIFIER;
155: private static ElementTypes toType6 = ElementTypes.TEMPLATE_CLASS;
156: private static boolean eIO6 = false;
157: //--
158: private static String componentDiagramName7 = "cpD7";
159: private static String workPkg7 = "pkg7";
160: private static String element7 = "Association";
161: private static String treeNode7 = element7;
162: private static String elementName7 = "";
163: private static LinkTypes elementType7 = LinkTypes.ASSOCIATION;
164: private static ElementTypes fromType7 = ElementTypes.COMPONENT;
165: private static ElementTypes toType7 = ElementTypes.CLASS;
166: private static boolean eIO7 = false;
167: //--
168: private static String componentDiagramName8 = "cpD8";
169: private static String workPkg8 = "pkg8";
170: private static String element8 = "Composition";
171: private static String treeNode8 = element8;
172: private static String elementName8 = "";
173: private static LinkTypes elementType8 = LinkTypes.COMPOSITION;
174: private static ElementTypes fromType8 = ElementTypes.COMPONENT;
175: private static ElementTypes toType8 = ElementTypes.CLASS;
176: private static boolean eIO8 = false;
177: //--
178: private static String componentDiagramName9 = "cpD9";
179: private static String workPkg9 = "pkg9";
180: private static String element9 = "Navigable Composition";
181: private static String treeNode9 = "Composition";
182: private static String elementName9 = "";
183: private static LinkTypes elementType9 = LinkTypes.NAVIGABLE_COMPOSITION;
184: private static ElementTypes fromType9 = ElementTypes.COMPONENT;
185: private static ElementTypes toType9 = ElementTypes.CLASS;
186: private static boolean eIO9 = false;
187: //--
188: private static String componentDiagramName10 = "cpD10";
189: private static String workPkg10 = "pkg10";
190: private static String element10 = "Aggregation";
191: private static String treeNode10 = element10;
192: private static String elementName10 = "";
193: private static LinkTypes elementType10 = LinkTypes.AGGREGATION;
194: private static ElementTypes fromType10 = ElementTypes.COMPONENT;
195: private static ElementTypes toType10 = ElementTypes.CLASS;
196: private static boolean eIO10 = false;
197: //--
198: private static String componentDiagramName11 = "cpD11";
199: private static String workPkg11 = "pkg11";
200: private static String element11 = "Navigable Aggregation";
201: private static String treeNode11 = element11;
202: private static String elementName11 = "";
203: private static LinkTypes elementType11 = LinkTypes.NAVIGABLE_AGGREGATION;
204: private static ElementTypes fromType11 = ElementTypes.COMPONENT;
205: private static ElementTypes toType11 = ElementTypes.CLASS;
206: private static boolean eIO11 = false;
207: //--
208: private static String componentDiagramName12 = "cpD12";
209: private static String workPkg12 = "pkg12";
210: private static String element12 = "Navigable Association";
211: private static String treeNode12 = element12;
212: private static String elementName12 = "";
213: private static LinkTypes elementType12 = LinkTypes.NAVIGABLE_ASSOCIATION;
214: private static ElementTypes fromType12 = ElementTypes.COMPONENT;
215: private static ElementTypes toType12 = ElementTypes.CLASS;
216: private static boolean eIO12 = false;
217:
218: //--
219: //SPECIAL CASE
220: /*private static String componentDiagramName13 = "cpD13";
221: private static String workPkg13 = "pkg13";
222: private static String element13="Association Class";
223: private static String treeNode13=element13;
224: private static String elementName13="";
225: private static LinkTypes elementType13=LinkTypes.ASSOCIATION_CLASS;
226: private static ElementTypes fromType13=ElementTypes.COMPONENT;
227: private static ElementTypes toType13=ElementTypes.CLASS;
228: private static boolean eIO13=false;*/
229: //--
230: //Special case
231: /* private static String componentDiagramName14 = "cpD14";
232: private static String workPkg14 = "pkg14";
233: private static String element14="Role Binding";
234: private static String treeNode14=element14;
235: private static String elementName14=defaultNewElementName;
236: private static LinkTypes elementType14=LinkTypes.ROLE_BINDING;
237: private static ElementTypes fromType14=ElementTypes.DESIGN_PATTERN;
238: private static ElementTypes toType14=ElementTypes.ACTOR_ROLE;
239: private static boolean eIO14=false;*/
240: //--
241: //Special case
242: /*private static String componentDiagramName15 = "cpD15";
243: private static String workPkg15 = "pkg15";
244: private static String element15="Link Comment";
245: private static String treeNode15=element15;
246: private static String elementName15="";
247: private static LinkTypes elementType15=LinkTypes.LINK_COMMENT;
248: private static ElementTypes fromType14=ElementTypes.CLASS;
249: private static ElementTypes toType14=ElementTypes.COMMENT;
250: private static boolean eIO14=false;*/
251:
252: /** Need to be defined because of JUnit */
253: public PlaceDeleteLinksByDel(String name) {
254: super (name);
255: }
256:
257: public static NbTestSuite suite() {
258: NbTestSuite suite = new NbTestSuite(
259: org.netbeans.test.uml.componentdiagram.PlaceDeleteLinksByDel.class);
260: return suite;
261: }
262:
263: private DiagramOperator createOrOpenDiagram(String project,
264: String workPkg, String diagram) {
265: org.netbeans.test.umllib.Utils.RetAll rt = org.netbeans.test.umllib.Utils
266: .createOrOpenDiagram(
267: project,
268: workPkg,
269: diagram,
270: org.netbeans.test.umllib.NewDiagramWizardOperator.COMPONENT_DIAGRAM);
271: pto = rt.pto;
272: prTree = new JTreeOperator(pto);
273: lastDiagramNode = rt.lastDiagramNode;
274: return rt.dOp;
275: }
276:
277: public void testDeleteLinkByKey1() {
278: lastTestCase = getCurrentTestMethodName();
279: testLinkPlaceDelete(workPkg1, componentDiagramName1, fromType1,
280: toType1, element1, elementName1, elementType1,
281: treeNode1, eIO1);
282: }
283:
284: public void testDeleteLinkByKey2() {
285: lastTestCase = getCurrentTestMethodName();
286: testLinkPlaceDelete(workPkg2, componentDiagramName2, fromType2,
287: toType2, element2, elementName2, elementType2,
288: treeNode2, eIO2);
289: }
290:
291: /* public void testDeleteLinkByKey3() {
292: testLinkPlaceDelete(workPkg3,componentDiagramName3, fromType3, toType3,element3,elementName3,elementType3,treeNode3,eIO3);
293: }*/
294: public void testDeleteLinkByKey4() {
295: lastTestCase = getCurrentTestMethodName();
296: testLinkPlaceDelete(workPkg4, componentDiagramName4, fromType4,
297: toType4, element4, elementName4, elementType4,
298: treeNode4, eIO4);
299: }
300:
301: /*public void testDeleteLinkByKey5() {
302: testLinkPlaceDelete(workPkg5,componentDiagramName5, fromType5, toType5,element5,elementName5,elementType5,treeNode5,eIO5);
303: }*/
304: public void testDeleteLinkByKey6() {
305: lastTestCase = getCurrentTestMethodName();
306: testLinkPlaceDelete(workPkg6, componentDiagramName6, fromType6,
307: toType6, element6, elementName6, elementType6,
308: treeNode6, eIO6);
309: }
310:
311: public void testDeleteLinkByKey7() {
312: lastTestCase = getCurrentTestMethodName();
313: testLinkPlaceDelete(workPkg7, componentDiagramName7, fromType7,
314: toType7, element7, elementName7, elementType7,
315: treeNode7, eIO7);
316: }
317:
318: public void testDeleteLinkByKey8() {
319: lastTestCase = getCurrentTestMethodName();
320: testLinkPlaceDelete(workPkg8, componentDiagramName8, fromType8,
321: toType8, element8, elementName8, elementType8,
322: treeNode8, eIO8);
323: }
324:
325: public void testDeleteLinkByKey9() {
326: lastTestCase = getCurrentTestMethodName();
327: testLinkPlaceDelete(workPkg9, componentDiagramName9, fromType9,
328: toType9, element9, elementName9, elementType9,
329: treeNode1, eIO9);
330: }
331:
332: public void testDeleteLinkByKey10() {
333: lastTestCase = getCurrentTestMethodName();
334: testLinkPlaceDelete(workPkg10, componentDiagramName10,
335: fromType10, toType10, element10, elementName10,
336: elementType10, treeNode1, eIO10);
337: }
338:
339: public void testDeleteLinkByKey11() {
340: lastTestCase = getCurrentTestMethodName();
341: testLinkPlaceDelete(workPkg11, componentDiagramName11,
342: fromType11, toType11, element11, elementName11,
343: elementType11, treeNode1, eIO11);
344: }
345:
346: public void testDeleteLinkByKey12() {
347: lastTestCase = getCurrentTestMethodName();
348: testLinkPlaceDelete(workPkg12, componentDiagramName12,
349: fromType12, toType12, element12, elementName12,
350: elementType12, treeNode12, eIO12);
351: }
352:
353: /*public void testDeleteLinkByKey13() {
354: testLinkPlaceDelete(workPkg13,componentDiagramName13, fromType13, toType13,element13,elementName13,elementType13,treeNode13,eIO13);
355: }*/
356: /*public void testDeleteLinkByKey14() {
357: testLinkPlaceDelete(workPkg14,componentDiagramName14, fromType14, toType14,element14,elementName14,elementType14,treeNode14,eIO14);
358: }*/
359: /*public void testDeleteLinkByKey15() {
360: testLinkPlaceDelete(workPkg15,componentDiagramName15, fromType15, toType15,element15,elementName15,elementType15,treeNode15,eIO15);
361: }*/
362:
363: public void setUp() {
364: System.out.println("######## " + getName() + " #######");
365: pto = ProjectsTabOperator.invoke();
366: if (!codeSync) {
367: org.netbeans.test.uml.componentdiagram.utils.Utils
368: .commonComponentDiagramSetup(workdir, prName);
369: //
370: codeSync = true;
371: }
372:
373: }
374:
375: public void tearDown() {
376: org.netbeans.test.umllib.util.Utils
377: .makeScreenShot(lastTestCase);
378: //popup protection
379: MainWindowOperator.getDefault().pushKey(KeyEvent.VK_ESCAPE);
380: new EventTool().waitNoEvent(1000);
381: //
382: closeAllModal();
383: org.netbeans.test.umllib.util.Utils.saveAll();
384: if (lastDiagramNode != null) {
385: lastDiagramNode.collapse();
386: new Node(lastDiagramNode.tree(), lastDiagramNode
387: .getParentPath()).collapse();
388: }
389: try {
390: DiagramOperator d = new DiagramOperator("cpD");
391: d.closeAllDocuments();
392: d.waitClosed();
393: new EventTool().waitNoEvent(1000);
394: } catch (Exception ex) {
395: }
396: ;
397: closeAllModal();
398: //save
399: org.netbeans.test.umllib.util.Utils.tearDown();
400: }
401:
402: private void testLinkPlaceDelete(String workPkg,
403: String diagramName, ElementTypes fromType,
404: ElementTypes toType, String element, String elementName,
405: LinkTypes elementType, String treeNode, boolean useIO) {
406: String localElName1 = "El1";
407: String localElName2 = "El2";
408: String newName = "LinkName";
409: //
410: DiagramOperator d = createOrOpenDiagram(project, workPkg,
411: diagramName);
412: //
413: Node pkgNode = new Node(prTree, lastDiagramNode.getParentPath());
414: int numChild = pkgNode.getChildren().length;
415: //
416: UMLPaletteOperator pl = new UMLPaletteOperator();
417: DrawingAreaOperator drAr = d.getDrawingArea();
418: //
419: java.awt.Point a = drAr.getFreePoint();
420: DiagramElementOperator dE1 = null, dE2 = null;
421: try {
422: dE1 = d.putElementOnDiagram(localElName1, fromType, a.x,
423: a.y);
424: a = drAr.getFreePoint(150);
425: dE2 = d.putElementOnDiagram(localElName2, toType, a.x, a.y);
426: } catch (Exception ex) {
427:
428: }
429: //
430: try {
431: pl.selectTool(element);
432: } catch (NotFoundException ex) {
433: fail("BLOCKING: Can't find '" + element + "' in paletter");
434: }
435: //
436: drAr.clickMouse(dE1.getCenterPoint().x, dE1.getCenterPoint().y,
437: 1);
438: drAr.clickMouse(dE2.getCenterPoint().x, dE2.getCenterPoint().y,
439: 1);
440: //
441: new EventTool().waitNoEvent(2000);
442: drAr.pushKey(KeyEvent.VK_ESCAPE);
443: LinkOperator testedlink = null;
444: try {
445: /* In netbeans6.0 composition and navigable composition link are shown as aggregation in
446: * project view as they are special form of aggregation. See Issue 116868
447: * Similar to navigable aggregation and navigable association.The default name
448: * aggrgation and association are used in project modle.
449: * As workaround for test, here set type to their default type.
450: */
451: LinkTypes elementTypeInProjectTree = elementType;
452: if ((elementType == LinkTypes.COMPOSITION)
453: || (elementType == LinkTypes.NAVIGABLE_COMPOSITION))
454: elementTypeInProjectTree = LinkTypes.AGGREGATION;
455: if (elementType == LinkTypes.NAVIGABLE_AGGREGATION)
456: elementTypeInProjectTree = LinkTypes.AGGREGATION;
457: if (elementType == LinkTypes.NAVIGABLE_ASSOCIATION)
458: elementTypeInProjectTree = LinkTypes.ASSOCIATION;
459: testedlink = LinkOperator.findLink(dE1, dE2,
460: new LinkOperator.LinkByTypeChooser(
461: elementTypeInProjectTree), 0);
462: } catch (Exception ex) {
463: fail(element + " of type " + elementType
464: + " wasn't added to diagram:" + ex);
465: }
466: if (testedlink == null) {
467: LinkOperator altLink = null;
468: try {
469: altLink = LinkOperator.findLink(dE1, dE2,
470: new LinkOperator.LinkByTypeChooser(
471: LinkTypes.ANY), 0);
472: } catch (Exception ex) {
473: fail("any link find failed.");
474: }
475: if (altLink != null)
476: fail("Can't find " + elementType
477: + " link between elements, but the is "
478: + altLink.getType() + " link.");
479: }
480: //
481: testedlink.select();
482: //
483: PropertySheetOperator ps = null;
484: try {
485: ps = new PropertySheetOperator(elementType
486: + " - Properties");
487: } catch (org.netbeans.jemmy.TimeoutExpiredException ex) {
488: ps = new PropertySheetOperator();
489: throw ex;
490: }
491: //
492: //
493: org.netbeans.test.uml.componentdiagram.utils.Utils
494: .setTextProperty("Name", newName);
495: new EventTool().waitNoEvent(500);
496: d.makeComponentVisible();
497: try {
498: Thread.sleep(100);
499: } catch (Exception ex) {
500: }
501: testedlink.select();
502: try {
503: Thread.sleep(100);
504: } catch (Exception ex) {
505: }
506: //remove link
507: drAr.pushKey(KeyEvent.VK_DELETE);
508: JDialogOperator delDlg = new JDialogOperator("Delete");
509: try {
510: Thread.sleep(1000);
511: } catch (Exception ex) {
512: }
513: delDlg.waitComponentShowing(true);
514: JCheckBoxOperator chk = new JCheckBoxOperator(delDlg);
515: chk.waitComponentShowing(true);
516: if (!chk.isSelected())
517: chk.clickMouse();
518: chk.waitSelected(true);
519: new JButtonOperator(delDlg, "Yes").pushNoBlock();
520: //
521: new DiagramElementOperator(d, localElName1);
522: new DiagramElementOperator(d, localElName2);
523: //
524: testedlink = null;
525: try {
526: for (int i = 0; i < 10; i++) {
527: testedlink = LinkOperator
528: .findLink(dE1, dE2,
529: new LinkOperator.LinkByTypeChooser(
530: elementType), 0);
531: if (testedlink == null)
532: break;
533: Thread.sleep(100);
534: }
535: } catch (Exception ex) {
536:
537: }
538: assertFalse("Link remains on diagram after deletion",
539: testedlink != null);
540: Node n1 = new Node(pkgNode, localElName1);
541: Node n2 = new Node(pkgNode, localElName2);
542: Node rel1 = null;
543: if (n1.isChildPresent("Relationships"))
544: rel1 = new Node(n1, "Relationships");
545: Node rel2 = null;
546: if (n2.isChildPresent("Relationships"))
547: rel2 = new Node(n2, "Relationships");
548: new EventTool().waitNoEvent(500);
549: if (useIO) {
550: assertFalse(
551: "There is Outgoing Edges node remains after link deletion",
552: rel1 != null
553: && rel1.isChildPresent("Outgoing Edges"));
554: assertFalse(
555: "There is Incoming Edges node remains after link deletion",
556: rel2 != null
557: && rel2.isChildPresent("Incoming Edges"));
558: } else {
559: assertFalse("There should be no " + newName
560: + " node within Relationships node of "
561: + localElName1, rel1 != null
562: && rel1.isChildPresent(newName));
563: assertFalse("There should be no " + newName
564: + " node within Relationships node of "
565: + localElName2, rel2 != null
566: && rel2.isChildPresent(newName));
567: }
568: }
569:
570: }
|