package com.ricebridge.xmlman.in.test;
import com.ricebridge.xmlman.*;
import com.ricebridge.xmlman.in.*;
import org.jostraca.util.*;
import junit.framework.*;
import junit.textui.*;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.parsers.SAXParser;
import java.util.*;
import java.io.*;
public class XmlWriterTest extends TestCase {
public XmlWriterTest( String pXmlWriter ) {
super( pXmlWriter );
}
public static TestSuite suite() {
return new TestSuite( XmlWriterTest.class );
}
public static void main( String[] pArgs ) {
TestRunner.run( suite() );
}
public void testNormal() throws Exception {
String encoding = "UTF-8";
ByteArrayOutputStream baos = new ByteArrayOutputStream();
XmlWriter xw = new XmlWriter();
xw.setOutput( baos, encoding );
xw.startDocument("");
xw.startElement( "root", ListUtil.make(), null );
xw.startElement( "foo", ListUtil.make("a","b"), null );
xw.endElement("foo");
xw.endElement("root");
xw.endDocument("");
String xmlstr = baos.toString( encoding );
assertEquals( "<root><foo a=\"b\"></foo></root>", xmlstr );
}
public void testSpecial() throws Exception {
String encoding = "UTF-8";
ByteArrayOutputStream baos = new ByteArrayOutputStream();
XmlWriter xw = new XmlWriter();
xw.setOutput( baos, encoding );
xw.startDocument("head");
xw.startElement( "root", ListUtil.make("xml:lang","en", "xml:space","default"), null );
xw.startElement( "foo", ListUtil.make("a","b"), null );
xw.endElement("foo");
xw.endElement("root");
xw.endDocument("tail");
String xmlstr = baos.toString( encoding );
assertEquals( "head<root xml:lang=\"en\" xml:space=\"default\"><foo a=\"b\"></foo></root>tail", xmlstr );
baos = new ByteArrayOutputStream();
xw.setOutput( baos, encoding );
xw.setIndent( true );
xw.startDocument("head");
xw.startElement( "root", ListUtil.make(), null );
xw.startElement( "foo", ListUtil.make(), null );
xw.endElement("foo");
xw.endElement("root");
xw.endDocument("tail");
xmlstr = baos.toString( encoding );
assertEquals( "head\n<root>\n <foo></foo>\n</root>\ntail", xmlstr );
}
public void testNamespace() throws Exception {
String encoding = "UTF-8";
ByteArrayOutputStream baos = new ByteArrayOutputStream();
XmlWriter xw = new XmlWriter();
xw.setOutput( baos, encoding );
HashMap nsm = new HashMap();
nsm.put("rb","uri:ricebridge");
nsm.put("h","uri:html");
xw.startDocument("");
xw.startElement( "root", ListUtil.make(), nsm );
xw.startElement( "foo", ListUtil.make("a","b"), null );
xw.startElement( "rb:bar", ListUtil.make("a","b", "rb:c","d"), null );
xw.startElement( "h:div", ListUtil.make("a","b", "h:c","d"), null );
xw.endElement("h:div");
xw.endElement("rb:bar");
xw.endElement("foo");
xw.endElement("root");
xw.endDocument("");
String xmlstr = baos.toString( encoding );
assertEquals( "<root xmlns:rb=\"uri:ricebridge\" xmlns:h=\"uri:html\"><foo a=\"b\"><rb:bar a=\"b\" rb:c=\"d\"><h:div a=\"b\" h:c=\"d\"></h:div></rb:bar></foo></root>", xmlstr );
}
}