/*
* Copyright (C) 2004, 2005 Joe Walnes.
* Copyright (C) 2006, 2007 XStream Committers.
* All rights reserved.
*
* The software in this package is published under the terms of the BSD
* style license a copy of which has been included with this distribution in
* the LICENSE.txt file.
*
* Created on 07. March 2004 by Joe Walnes
*/
package com.thoughtworks.xstream.io.xml;
import com.thoughtworks.xstream.core.util.QuickWriter;
import java.io.StringWriter;
import java.io.Writer;
public class CompactWriterTest extends AbstractXMLWriterTest {
private Writer buffer;
protected void setUp() throws Exception {
super.setUp();
buffer = new StringWriter();
writer = new CompactWriter(buffer);
}
protected void assertXmlProducedIs(String expected) {
assertEquals(expected, buffer.toString());
}
public void testXmlIsIndented() {
writer.startNode("hello");
writer.startNode("world");
writer.startNode("one");
writer.setValue("potato");
writer.endNode();
writer.startNode("two");
writer.setValue("potatae");
writer.endNode();
writer.endNode();
writer.endNode();
String expected = "<hello><world><one>potato</one><two>potatae</two></world></hello>";
assertXmlProducedIs(expected);
}
public void testEncodesFunnyXmlChars() {
writer.startNode("tag");
writer.setValue("hello & this isn't \"really\" <good>");
writer.endNode();
String expected = "<tag>hello & this isn't "really" <good></tag>";
assertXmlProducedIs(expected);
}
public void testWriteTextAsCDATA() {
writer = new CompactWriter(buffer) {
protected void writeText(QuickWriter writer, String text) {
writer.write("<[CDATA[");
writer.write(text);
writer.write("]]>");
}
};
writer.startNode("tag");
writer.setValue("hello & this isn't \"really\" <good>");
writer.endNode();
String expected = "<tag><[CDATA[hello & this isn't \"really\" <good>]]></tag>";
assertXmlProducedIs(expected);
}
public void testAttributesCanBeWritten() {
writer.startNode("tag");
writer.addAttribute("hello", "world");
writer.startNode("inner");
writer.addAttribute("foo", "bar");
writer.addAttribute("poo", "par");
writer.setValue("hi");
writer.endNode();
writer.endNode();
String expected = "" +
"<tag hello=\"world\">" +
"<inner foo=\"bar\" poo=\"par\">hi</inner>" +
"</tag>";
assertXmlProducedIs(expected);
}
}