1
2
3
4
5
6
7
8
9
10 package org.dom4j.io;
11
12 import java.io.ByteArrayInputStream;
13 import java.io.ByteArrayOutputStream;
14
15 import java.io.StringWriter;
16 import java.util.Iterator;
17 import java.util.List;
18
19 import junit.framework.*;
20 import junit.textui.TestRunner;
21
22 import org.dom4j.*;
23
24 import java.io.StringWriter;
25 import java.io.StringReader;
26
27 /*** A simple test harness to check that the XML Writer works
28 *
29 * @author <a href="mailto:james.strachan@metastuff.com">James Strachan</a>
30 * @version $Revision: 1.2 $
31 */
32 public class TestWriteUnmergedText extends AbstractTestCase {
33
34
35 private String inputText = "<?xml version = \"1.0\"?><TestEscapedEntities><TEXT>Test using < & ></TEXT></TestEscapedEntities>";
36 protected static final boolean VERBOSE = true;
37
38
39 public static void main( String[] args ) {
40 TestRunner.run( suite() );
41 }
42
43 public static Test suite() {
44 return new TestSuite( TestWriteUnmergedText.class );
45 }
46
47 public TestWriteUnmergedText(String name) {
48 super(name);
49 }
50
51
52
53 public String readwriteText(OutputFormat outFormat, boolean mergeAdjacentText) throws Exception {
54
55 StringWriter out = new StringWriter();
56 StringReader in = new StringReader(inputText);
57 SAXReader reader = new SAXReader();
58
59
60 reader.setMergeAdjacentText(mergeAdjacentText);
61
62 Document document = reader.read(in);
63
64 XMLWriter writer = outFormat == null ? new XMLWriter(out) : new XMLWriter(out, outFormat);
65 writer.write(document);
66 writer.close();
67
68 String outText = out.toString();
69 return outText;
70 }
71
72
73 public void testWithoutFormatNonMerged() throws Exception {
74
75 String outText = readwriteText(null, false);
76
77 if ( VERBOSE ) {
78 log( "Text output is [" );
79 log( outText );
80 log( "]. Done" );
81 }
82
83
84 assertTrue("Output text contains \"&\"", outText.lastIndexOf("&") >= 0);
85 assertTrue("Output text contains \"<\"", outText.lastIndexOf("<") >= 0);
86 }
87
88 public void testWithCompactFormatNonMerged() throws Exception {
89
90 String outText = readwriteText(OutputFormat.createCompactFormat(), false);
91
92 if ( VERBOSE ) {
93 log( "Text output is [" );
94 log( outText );
95 log( "]. Done" );
96 }
97
98
99 assertTrue("Output text contains \"&\"", outText.lastIndexOf("&") >= 0);
100 assertTrue("Output text contains \"<\"", outText.lastIndexOf("<") >= 0);
101 }
102
103 public void testWithPrettyPrintFormatNonMerged() throws Exception {
104
105 String outText = readwriteText(OutputFormat.createPrettyPrint(), false);
106
107 if ( VERBOSE ) {
108 log( "Text output is [" );
109 log( outText );
110 log( "]. Done" );
111 }
112
113
114 assertTrue("Output text contains \"&\"", outText.lastIndexOf("&") >= 0);
115 assertTrue("Output text contains \"<\"", outText.lastIndexOf("<") >= 0);
116 }
117
118 public void testWithoutFormatMerged() throws Exception {
119
120 String outText = readwriteText(null, true);
121
122 if ( VERBOSE ) {
123 log( "Text output is [" );
124 log( outText );
125 log( "]. Done" );
126 }
127
128
129 assertTrue("Output text contains \"&\"", outText.lastIndexOf("&") >= 0);
130 assertTrue("Output text contains \"<\"", outText.lastIndexOf("<") >= 0);
131 }
132
133 public void testWithCompactFormatMerged() throws Exception {
134
135 String outText = readwriteText(OutputFormat.createCompactFormat(), true);
136
137 if ( VERBOSE ) {
138 log( "Text output is [" );
139 log( outText );
140 log( "]. Done" );
141 }
142
143
144 assertTrue("Output text contains \"&\"", outText.lastIndexOf("&") >= 0);
145 assertTrue("Output text contains \"<\"", outText.lastIndexOf("<") >= 0);
146 }
147
148 public void testWithPrettyPrintFormatMerged() throws Exception {
149
150 String outText = readwriteText(OutputFormat.createPrettyPrint(), true);
151
152 if ( VERBOSE ) {
153 log( "Text output is [" );
154 log( outText );
155 log( "]. Done" );
156 }
157
158
159 assertTrue("Output text contains \"&\"", outText.lastIndexOf("&") >= 0);
160 assertTrue("Output text contains \"<\"", outText.lastIndexOf("<") >= 0);
161 }
162 }
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210