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 NamespaceTest extends TestCase {
public NamespaceTest( String pName ) {
super( pName );
}
public static TestSuite suite() {
return new TestSuite( NamespaceTest.class );
}
public static void main( String[] pArgs ) {
TestRunner.run( suite() );
}
private static ArrayList sRecordSpecList = new ArrayList();
private static ArrayList sRecordDataList = new ArrayList();
private static ArrayList sXmlSpecList = new ArrayList();
private static ArrayList sOutRecordSpecList = new ArrayList();
private static ArrayList sOutRecordDataList = new ArrayList();
private static ArrayList sOutXmlSpecList = new ArrayList();
static {
XmlSpec xs;
sRecordSpecList.add( new RecordSpec( "//a:bar", new String[] { "@barn", "namespace::a:que" } ) );
xs = new XmlSpec(); xs.addNamespace( "a", "ns-a" ); sXmlSpecList.add(xs);
sRecordDataList.add( ListUtil.make( new String[] { "bar1", "ns-a" } ) );
sRecordSpecList.add( new RecordSpec( "//a:foo", new String[] { "@a:name" } ) );
xs = new XmlSpec(); xs.addNamespace( "a", "ns-a1" ); sXmlSpecList.add(xs);
sRecordDataList.add( ListUtil.make( new String[] {"foo2"} ) );
sRecordSpecList.add( new RecordSpec( "//a:foo", new String[] { "@a:name" } ) );
xs = new XmlSpec(); xs.addNamespace( "a", "ns-a2" ); sXmlSpecList.add(xs);
sRecordDataList.add( ListUtil.make( new String[] {"foo3"} ) );
sRecordSpecList.add( new RecordSpec( "//a:foo[namespace-uri()='ns-a2']", new String[] { "@a:name" } ) );
xs = new XmlSpec(); xs.addNamespace( "a", "ns-a2" ); sXmlSpecList.add(xs);
sRecordDataList.add( ListUtil.make( new String[] {"foo3"} ) );
sRecordSpecList.add( new RecordSpec( "//a:foo/a:bar", new String[] { "namespace-uri(//a:foo)" } ) );
xs = new XmlSpec(); xs.addNamespace( "a", "ns-a" ); sXmlSpecList.add(xs);
sRecordDataList.add( ListUtil.make( new String[] {"ns-a"} ) );
sRecordSpecList.add( new RecordSpec( "//a:foo/a:bar", new String[] { "local-name(//a:foo)" } ) );
xs = new XmlSpec(); xs.addNamespace( "a", "ns-a" ); sXmlSpecList.add(xs);
sRecordDataList.add( ListUtil.make( new String[] {"foo"} ) );
sRecordSpecList.add( new RecordSpec( "//a:*", new String[] { "name()" } ) );
xs = new XmlSpec(); xs.addNamespace( "a", "ns-a" ); sXmlSpecList.add(xs);
sRecordDataList.add( ListUtil.make( new String[] {"que"},
new String[] {"bar"},
new String[] {"foo"} ) );
sRecordSpecList.add( new RecordSpec( "//a:foo", new String[] { "namespace::a:bar[1]" } ) );
xs = new XmlSpec(); xs.addNamespace( "a", "ns-a" ); sXmlSpecList.add(xs);
sRecordDataList.add( ListUtil.make( new String[] {"ns-a"} ) );
sRecordSpecList.add( new RecordSpec( "//baz", new String[] { "namespace::bat1:bat" } ) );
xs = new XmlSpec(); xs.addNamespace( "bat1", "bat1" ); sXmlSpecList.add(xs);
sRecordDataList.add( ListUtil.make( new String[] {"bat1"} ) );
sOutRecordSpecList.add( new RecordSpec( "/root/foo", new String[] { "@a",
"rb:bar/@a", "rb:bar/@rb:c",
"rb:bar/@rb:a", "rb:bar/@c",
".//h:div/@a", ".//h:div/@h:c",
".//h:div/@h:a", ".//h:div/@c" } ) );
xs = new XmlSpec();
xs.addNamespace( "rb", "uri:ricebridge" );
xs.addNamespace( "h", "uri:html" );
sOutXmlSpecList.add(xs);
sOutRecordDataList.add( ListUtil.make( new String[] {"b", "b", "d", "", "", "b", "d", "", ""} ) );
}
public void testNamespace() throws Exception {
TestUtil.testRecords( "com/ricebridge/xmlman/in/test/namespace.xml", sXmlSpecList, sRecordSpecList, sRecordDataList, this );
}
public void testAwareness() throws Exception {
File xmlfile = TestUtil.findFile( "com/ricebridge/xmlman/in/test/namespace.xml" );
XmlManager xm = new XmlManager();
xm.getXmlSpec().setNamespaceAware(false);
RecordSpec rs = new RecordSpec("//a:foo",new String[] {"@a:name"});
List data = xm.loadAsLists( xmlfile, rs );
assertEquals("[[foo2], [foo3]]", ""+data);
}
public void testXmlFunc() throws Exception {
File xmlfile = TestUtil.findFile( "com/ricebridge/xmlman/in/test/nstext.xml" );
XmlManager xm = new XmlManager();
xm.getXmlSpec().addNamespace( "a", "ns-a" );
RecordSpec rs = new RecordSpec("/root/a:foo",new String[] {"@a:bar", "@que", "rb:xml(zoo)", "rb:xml(.)"});
List data = xm.loadAsLists( xmlfile, rs );
assertEquals( "[[b1, q1, <zoo>z1t</zoo>, <a:foo a:bar=\"b1\" que=\"q1\">ft1<zoo>z1t</zoo>ft2</a:foo>]]", data.toString() );
}
public void testOutputNamespace() throws Exception {
TestUtil.testRecords( "com/ricebridge/xmlman/in/test/nsout.xml", sOutXmlSpecList, sOutRecordSpecList, sOutRecordDataList, this );
}
}