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 java.util.*;
import java.io.*;
public class TargetPathTest extends TestCase {
public TargetPathTest( String pName ) {
super( pName );
}
public static TestSuite suite() {
return new TestSuite( TargetPathTest.class );
}
public static void main( String[] pArgs ) {
TestRunner.run( suite() );
}
public void testCreate() {
ArrayList ppl = new ArrayList();
ppl.add( new PathPart( "foo", CoreDef.CHILD ) );
ppl.add( new PathPart( "bar", CoreDef.CHILD ) );
ppl.add( new PathPart( "jar", CoreDef.CHILD ) );
PathSpec ps = new PathSpec();
ps.iPartList = ppl;
ps.iHasAttr = true;
ps.iAttrLocalName = "red"; ps.iAttrPrefix = ""; ps.iAttrNamespaceURI = "";
TargetPath tp01 = new TargetPath( ps );
StringListRecordListener drt01 = new StringListRecordListener( );
assertEquals( "TP[:foo/bar/jar/@red:off:@,pp:<1:foo>,<1:bar>,<1:jar>,]", tp01.toString(false) );
ppl = new ArrayList();
ppl.add( new PathPart( "foo", CoreDef.CHILD ) );
ps = new PathSpec();
ps.iPartList = ppl;
ps.iHasAttr = true;
ps.iAttrLocalName = "red"; ps.iAttrPrefix = ""; ps.iAttrNamespaceURI = "";
TargetPath tp02 = new TargetPath( ps );
assertEquals( "TP[:foo/@red:off:@,pp:<1:foo>,]", tp02.toString(false) );
ps = new PathSpec();
ps.iPartList = ListUtil.make( new PathPart("foo",CoreDef.CHILD), new PathPart("jar",CoreDef.DESCENDORSELF) );
ps.iHasAttr = true;
ps.iAttrLocalName = "green"; ps.iAttrPrefix = ""; ps.iAttrNamespaceURI = "";
TargetPath tp03 = new TargetPath( ps );
StringListRecordListener drt02 = new StringListRecordListener( );
assertEquals( "TP[:foo//jar/@green:off:@,pp:<1:foo>,<3:jar>,]", tp03.toString(false) );
}
public void testSplit() {
PathSpec ps;
TargetPath tp;
List tp_split;
ps = new PathSpec();
ps.iHasAttr = true;
ps.iAttrLocalName = "record"; ps.iAttrPrefix = ""; ps.iAttrNamespaceURI = "";
ps.iPartList = ListUtil.make( new PathPart("foo",CoreDef.CHILD),
new PathPart("jar",CoreDef.DESCENDORSELF),
new PathPart("que",CoreDef.CHILD) );
tp = new TargetPath( ps );
tp_split = tp.splitOnDescend();
assertEquals( "TP[:foo//jar:off,pp:<1:foo>,<3:jar>,], TP[:que/@record:off:@,pp:<1:que>,], ", TestUtil.toString(tp_split) );
ps.iPartList = ListUtil.make( new PathPart("jar",CoreDef.DESCENDORSELF),
new PathPart("que",CoreDef.CHILD) );
tp = new TargetPath( ps );
tp_split = tp.splitOnDescend();
assertEquals( "TP[://jar:off,pp:<3:jar>,], TP[:que/@record:off:@,pp:<1:que>,], ", TestUtil.toString(tp_split) );
ps.iPartList = ListUtil.make( new PathPart("jar",CoreDef.DESCENDORSELF) );
tp = new TargetPath( ps );
tp_split = tp.splitOnDescend();
assertEquals( "TP[://jar/@record:off:@,pp:<3:jar>,], ", TestUtil.toString(tp_split) );
ps.iPartList = ListUtil.make( new PathPart("que",CoreDef.CHILD),
new PathPart("jar",CoreDef.DESCENDORSELF) );
tp = new TargetPath( ps );
tp_split = tp.splitOnDescend();
assertEquals( "TP[:que//jar/@record:off:@,pp:<1:que>,<3:jar>,], ", TestUtil.toString(tp_split) );
ps.iPartList = ListUtil.make( new PathPart("que",CoreDef.CHILD),
new PathPart("jar",CoreDef.DESCENDORSELF),
new PathPart("foo",CoreDef.CHILD),
new PathPart("bar",CoreDef.DESCENDORSELF) );
tp = new TargetPath( ps );
tp_split = tp.splitOnDescend();
assertEquals( "TP[:que//jar:off,pp:<1:que>,<3:jar>,], TP[:foo//bar/@record:off:@,pp:<1:foo>,<3:bar>,], ", TestUtil.toString(tp_split) );
ps.iPartList = ListUtil.make( new PathPart("que",CoreDef.CHILD),
new PathPart("jar",CoreDef.DESCENDORSELF),
new PathPart("foo",CoreDef.CHILD),
new PathPart("bar",CoreDef.DESCENDORSELF),
new PathPart("boo",CoreDef.CHILD) );
tp = new TargetPath( ps );
tp_split = tp.splitOnDescend();
assertEquals( "TP[:que//jar:off,pp:<1:que>,<3:jar>,], TP[:foo//bar:off,pp:<1:foo>,<3:bar>,], TP[:boo/@record:off:@,pp:<1:boo>,], ", TestUtil.toString(tp_split) );
ps.iPartList = ListUtil.make( new PathPart("que",CoreDef.CHILD),
new PathPart("jar",CoreDef.DESCENDORSELF),
new PathPart("bar",CoreDef.DESCENDORSELF),
new PathPart("boo",CoreDef.CHILD) );
tp = new TargetPath( ps );
tp_split = tp.splitOnDescend();
assertEquals( "TP[:que//jar:off,pp:<1:que>,<3:jar>,], TP[://bar:off,pp:<3:bar>,], TP[:boo/@record:off:@,pp:<1:boo>,], ", TestUtil.toString(tp_split) );
}
}