1 /* 2 * Copyright 2001-2004 (C) MetaStuff, Ltd. All Rights Reserved. 3 * 4 * This software is open source. 5 * See the bottom of this file for the licence. 6 * 7 * $Id: TestAddNode.java,v 1.3 2004/06/25 08:03:47 maartenc Exp $ 8 */ 9 10 package org.dom4j; 11 12 import junit.framework.Test; 13 import junit.framework.TestSuite; 14 import junit.textui.TestRunner; 15 16 /*** A test harness to test the addNode() methods on node 17 * 18 * @author Philippe Ombredanne 19 */ 20 public class TestAddNode extends AbstractTestCase { 21 22 public static void main( String[] args ) { 23 TestRunner.run( suite() ); 24 } 25 26 public static Test suite() { 27 return new TestSuite( TestAddNode.class ); 28 } 29 30 public TestAddNode(String name) { 31 super(name); 32 } 33 34 // Test case(s) 35 //------------------------------------------------------------------------- 36 public void testDom4jAddNodeClone() { 37 Document maindoc = DocumentHelper.createDocument(); 38 Element docroot = maindoc.addElement("document"); 39 Element header = docroot.addElement("header").addText("Some Text"); 40 41 Document subdoc = DocumentHelper.createDocument(); 42 Element docroot2 = subdoc.addElement("document"); 43 44 docroot2.add((Element) maindoc.selectSingleNode("/document/header").clone()); 45 assertEquals(subdoc.asXML(), maindoc.asXML()); 46 } 47 48 public void testDom4jAddNodeCreateCopy() { 49 Document maindoc = DocumentHelper.createDocument(); 50 Element docroot = maindoc.addElement("document"); 51 Element header = docroot.addElement("header").addText("Some Text"); 52 53 Document subdoc = DocumentHelper.createDocument(); 54 Element docroot2 = subdoc.addElement("document"); 55 56 docroot2.add(((Element) maindoc.selectSingleNode("/document/header")).createCopy()); 57 assertEquals(subdoc.asXML(), maindoc.asXML()); 58 } 59 60 public void testDom4jAddNodeBug() { 61 Document maindoc = DocumentHelper.createDocument(); 62 Element docroot = maindoc.addElement("document"); 63 Element header = docroot.addElement("header").addText("Some Text"); 64 65 Document subdoc = DocumentHelper.createDocument(); 66 Element subroot = subdoc.addElement("document"); 67 68 try { 69 //add the header node from maindoc without clone... or createCopy 70 subroot.add((Element) maindoc.selectSingleNode("/document/header")); 71 fail(); 72 } catch (IllegalAddException e) { 73 // the header already has a parent, this exception is normal behaviour 74 } 75 76 } 77 } 78 79 80 81 /* 82 * Redistribution and use of this software and associated documentation 83 * ("Software"), with or without modification, are permitted provided 84 * that the following conditions are met: 85 * 86 * 1. Redistributions of source code must retain copyright 87 * statements and notices. Redistributions must also contain a 88 * copy of this document. 89 * 90 * 2. Redistributions in binary form must reproduce the 91 * above copyright notice, this list of conditions and the 92 * following disclaimer in the documentation and/or other 93 * materials provided with the distribution. 94 * 95 * 3. The name "DOM4J" must not be used to endorse or promote 96 * products derived from this Software without prior written 97 * permission of MetaStuff, Ltd. For written permission, 98 * please contact dom4j-info@metastuff.com. 99 * 100 * 4. Products derived from this Software may not be called "DOM4J" 101 * nor may "DOM4J" appear in their names without prior written 102 * permission of MetaStuff, Ltd. DOM4J is a registered 103 * trademark of MetaStuff, Ltd. 104 * 105 * 5. Due credit should be given to the DOM4J Project - 106 * http://www.dom4j.org 107 * 108 * THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS 109 * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT 110 * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 111 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 112 * METASTUFF, LTD. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 113 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 114 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 115 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 116 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 117 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 118 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 119 * OF THE POSSIBILITY OF SUCH DAMAGE. 120 * 121 * Copyright 2001-2004 (C) MetaStuff, Ltd. All Rights Reserved. 122 * 123 * $Id: TestAddNode.java,v 1.3 2004/06/25 08:03:47 maartenc Exp $ 124 */