    1   /*
    2    * Copyright 2001-2005 (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
    8   package org.dom4j.io;
    9
    10  import junit.textui.TestRunner;
    11
    12  import java.io.StringWriter;
    13
    14  import org.dom4j.AbstractTestCase;
    15
    16  import org.w3c.dom.NamedNodeMap;
    17
    18  /***
    19   * DOCUMENT ME!
    20   *
    21   * @author Maarten
    22   */
    23  public class DOMWriterTest extends AbstractTestCase {
    24      public static void main(String[] args) {
    25          TestRunner.run(DOMWriterTest.class);
    26      }
    27
    28      public void testNamespaceBug() throws Exception {
    29          org.dom4j.Document doc = getDocument("/xml/namespaces.xml");
    30          DOMWriter writer = new DOMWriter(org.dom4j.dom.DOMDocument.class);
    31          org.w3c.dom.Document result = writer.write(doc);
    32
    33          NamedNodeMap atts = result.getDocumentElement().getAttributes();
    34          assertEquals(4, atts.getLength());
    35
    36          XMLWriter wr = new XMLWriter();
    37          wr.setOutputStream(System.out);
    38          wr.write((org.dom4j.Document) result);
    39      }
    40
    41      public void testBug905745() throws Exception {
    42          org.dom4j.Document doc = getDocument("/xml/namespaces.xml");
    43          DOMWriter writer = new DOMWriter();
    44          org.w3c.dom.Document result = writer.write(doc);
    45
    46          NamedNodeMap atts = result.getDocumentElement().getAttributes();
    47          org.w3c.dom.Node versionAttr = atts.getNamedItem("version");
    48          assertNotNull(versionAttr);
    49          assertNotNull(versionAttr.getLocalName());
    50          assertEquals("version", versionAttr.getLocalName());
    51          assertEquals("version", versionAttr.getNodeName());
    52      }
    53
    54      public void testBug926752() throws Exception {
    55          org.dom4j.Document doc = getDocument("/xml/test/defaultNamespace.xml");
    56          DOMWriter writer = new DOMWriter(org.dom4j.dom.DOMDocument.class);
    57          org.w3c.dom.Document result = writer.write(doc);
    58
    59          NamedNodeMap atts = result.getDocumentElement().getAttributes();
    60          assertEquals(1, atts.getLength());
    61
    62          OutputFormat format = OutputFormat.createCompactFormat();
    63          format.setSuppressDeclaration(true);
    64
    65          XMLWriter wr = new XMLWriter(format);
    66          StringWriter strWriter = new StringWriter();
    67          wr.setWriter(strWriter);
    68          wr.write((org.dom4j.Document) result);
    69          assertEquals("<a xmlns=\"dummyNamespace\"><b><c>Hello</c></b></a>",
    70                  strWriter.toString());
    71      }
    72  }
    73
    74  /*
    75   * Redistribution and use of this software and associated documentation
    76   * ("Software"), with or without modification, are permitted provided that the
    77   * following conditions are met:
    78   *
    79   * 1. Redistributions of source code must retain copyright statements and
    80   * notices. Redistributions must also contain a copy of this document.
    81   *
    82   * 2. Redistributions in binary form must reproduce the above copyright notice,
    83   * this list of conditions and the following disclaimer in the documentation
    84   * and/or other materials provided with the distribution.
    85   *
    86   * 3. The name "DOM4J" must not be used to endorse or promote products derived
    87   * from this Software without prior written permission of MetaStuff, Ltd. For
    88   * written permission, please contact dom4j-info@metastuff.com.
    89   *
    90   * 4. Products derived from this Software may not be called "DOM4J" nor may
    91   * "DOM4J" appear in their names without prior written permission of MetaStuff,
    92   * Ltd. DOM4J is a registered trademark of MetaStuff, Ltd.
    93   *
    94   * 5. Due credit should be given to the DOM4J Project - http://www.dom4j.org
    95   *
    96   * THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND
    97   * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    98   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    99   * ARE DISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE
    100  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    101  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    102  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    103  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    104  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    105  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    106  * POSSIBILITY OF SUCH DAMAGE.
    107  *
    108  * Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
    109  */