KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > dom4j > HTMLWriterTest


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;
9
10 import junit.textui.TestRunner;
11
12 import java.io.StringWriter JavaDoc;
13
14 import org.dom4j.io.HTMLWriter;
15 import org.dom4j.io.OutputFormat;
16
17 /**
18  * Test harness for the HTMLWriter
19  *
20  * @author <a HREF="mailto:jstrachan@apache.org">James Strachan </a>
21  * @version $Revision: 1.4 $
22  */

23 public class HTMLWriterTest extends AbstractTestCase {
24     public static void main(String JavaDoc[] args) {
25         TestRunner.run(HTMLWriterTest.class);
26     }
27
28     // Test case(s)
29
// -------------------------------------------------------------------------
30
public void testWriter() throws Exception JavaDoc {
31         String JavaDoc xml = "<html> <body><![CDATA[First&nbsp;test]]></body> </html>";
32         Document document = DocumentHelper.parseText(xml);
33         StringWriter JavaDoc buffer = new StringWriter JavaDoc();
34         HTMLWriter writer = new HTMLWriter(buffer);
35         writer.write(document);
36
37         String JavaDoc output = buffer.toString();
38
39         String JavaDoc expects = "\n<html>\n <body>First&nbsp;test</body>\n</html>\n";
40
41         System.out.println("expects: " + expects);
42         System.out.println("output: " + output);
43
44         assertEquals("Output is correct", expects, output);
45     }
46
47     public void testBug923882() throws Exception JavaDoc {
48         Document doc = DocumentFactory.getInstance().createDocument();
49         Element root = doc.addElement("root");
50         root.addText("this is ");
51         root.addText(" sim");
52         root.addText("ple text ");
53         root.addElement("child");
54         root.addText(" contai");
55         root.addText("ning spaces and");
56         root.addText(" multiple textnodes");
57
58         OutputFormat format = new OutputFormat();
59         format.setEncoding("UTF-8");
60         format.setIndentSize(4);
61         format.setNewlines(true);
62         format.setTrimText(true);
63         format.setExpandEmptyElements(true);
64
65         StringWriter JavaDoc buffer = new StringWriter JavaDoc();
66         HTMLWriter writer = new HTMLWriter(buffer, format);
67         writer.write(doc);
68
69         String JavaDoc xml = buffer.toString();
70         log(xml);
71
72         int start = xml.indexOf("<root");
73         int end = xml.indexOf("/root>") + 6;
74         String JavaDoc eol = "\n"; // System.getProperty("line.separator");
75
String JavaDoc expected = "<root>this is simple text" + eol
76                 + " <child></child>containing spaces and multiple textnodes"
77                 + eol + "</root>";
78         System.out.println("Expected:");
79         System.out.println(expected);
80         System.out.println("Obtained:");
81         System.out.println(xml.substring(start, end));
82         assertEquals(expected, xml.substring(start, end));
83     }
84
85     public void testBug923882asWriter() throws Exception JavaDoc {
86         // use an the HTMLWriter sax-methods.
87
//
88
StringWriter JavaDoc buffer = new StringWriter JavaDoc();
89         HTMLWriter writer = new HTMLWriter(buffer, OutputFormat
90                 .createPrettyPrint());
91         writer.characters("wor".toCharArray(), 0, 3);
92         writer.characters("d-being-cut".toCharArray(), 0, 11);
93
94         String JavaDoc expected = "word-being-cut";
95         assertEquals(expected, buffer.toString());
96
97         buffer = new StringWriter JavaDoc();
98         writer = new HTMLWriter(buffer, OutputFormat.createPrettyPrint());
99         writer.characters(" wor".toCharArray(), 0, 7);
100         writer.characters("d being ".toCharArray(), 0, 11);
101         writer.characters(" cut".toCharArray(), 0, 5);
102
103         expected = "word being cut";
104         assertEquals(expected, buffer.toString());
105     }
106
107     public void testBug923882asWriterWithEmptyCharArray() throws Exception JavaDoc {
108         // use an the HTMLWriter sax-methods.
109
//
110
StringWriter JavaDoc buffer = new StringWriter JavaDoc();
111         HTMLWriter writer = new HTMLWriter(buffer, OutputFormat
112                 .createPrettyPrint());
113         writer.characters("wor".toCharArray(), 0, 3);
114         writer.characters(new char[0], 0, 0);
115         writer.characters("d-being-cut".toCharArray(), 0, 11);
116
117         String JavaDoc expected = "word-being-cut";
118         assertEquals(expected, buffer.toString());
119     }
120
121     public void testBug619415() throws Exception JavaDoc {
122         Document doc = getDocument("/xml/test/dosLineFeeds.xml");
123
124         StringWriter JavaDoc wr = new StringWriter JavaDoc();
125         HTMLWriter writer = new HTMLWriter(wr, new OutputFormat("", false));
126         writer.write(doc);
127
128         String JavaDoc result = wr.toString();
129         System.out.println(result);
130
131         assertTrue(result.indexOf("Mary had a little lamb.") > -1);
132         assertTrue(result.indexOf("Hello, this is a test.") > -1);
133     }
134 }
135
136 /*
137  * Redistribution and use of this software and associated documentation
138  * ("Software"), with or without modification, are permitted provided that the
139  * following conditions are met:
140  *
141  * 1. Redistributions of source code must retain copyright statements and
142  * notices. Redistributions must also contain a copy of this document.
143  *
144  * 2. Redistributions in binary form must reproduce the above copyright notice,
145  * this list of conditions and the following disclaimer in the documentation
146  * and/or other materials provided with the distribution.
147  *
148  * 3. The name "DOM4J" must not be used to endorse or promote products derived
149  * from this Software without prior written permission of MetaStuff, Ltd. For
150  * written permission, please contact dom4j-info@metastuff.com.
151  *
152  * 4. Products derived from this Software may not be called "DOM4J" nor may
153  * "DOM4J" appear in their names without prior written permission of MetaStuff,
154  * Ltd. DOM4J is a registered trademark of MetaStuff, Ltd.
155  *
156  * 5. Due credit should be given to the DOM4J Project - http://www.dom4j.org
157  *
158  * THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND
159  * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
160  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
161  * ARE DISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE
162  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
163  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
164  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
165  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
166  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
167  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
168  * POSSIBILITY OF SUCH DAMAGE.
169  *
170  * Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
171  */

172
Popular Tags