/* Copyright (c) 2005 Ricebridge. All Rights Reserved.
 *
 * This file is available under the terms and conditions of the
 * Ricebridge "Open Source API" policy; Ricebridge grants use of this
 * copyrighted work under the terms of a BSD-style license only. See
 * http://www.opensource.org/licenses/bsd-license.php for more
 * information.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 
 *  - Redistributions of source code must retain the above copyright
 *  notice, this list of conditions and the following disclaimer.
 *
 *  - Redistributions in binary form must reproduce the above
 *  copyright notice, this list of conditions and the following
 *  disclaimer in the documentation and/or other materials provided
 *  with the distribution.
 *
 *  - Neither the name of the Ricebridge nor the names of its
 *  contributors may be used to endorse or promote products derived
 *  from this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 * OF THE POSSIBILITY OF SUCH DAMAGE.  
 */

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.*;


/** Test cases for {@link com.ricebridge.xmlman.in.PointHandler}. 
 *    <p>The <b><a href="PointHandlerTest.java.html">Source Code</a></b> of this Java class 
 *    is available under a <a href="http://www.opensource.org/licenses/bsd-license.php">BSD-style license</a>.</p>
 */
public class PointHandlerTest extends TestCase {

  // test framework
  
  public PointHandlerTest( String pName ) {
    super( pName );
  }

  public static TestSuite suite() {
    return new TestSuite( PointHandlerTest.class );
  }

  public static void main( String[] pArgs ) {
    TestRunner.run( suite() );
  }


  // test methods

  public void testTraversal() {
    DocContext dc = new DocContext( new XmlSpec() );

    // foo/bar/jar
    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;
    TargetPath tp_jar = new TargetPath( ps );
    tp_jar.activate(1,dc);

    StringArrayRecordListener crt01 = new StringArrayRecordListener( );

    // @red
    ps = new PathSpec();
    ps.iPartList      = new ArrayList();
    ps.iHasAttr       = true;
    ps.iAttrLocalName = "red"; ps.iAttrPrefix = ""; ps.iAttrNamespaceURI = "";
    TargetPath tp_red = new TargetPath( ps );
    tp_red.deactivate(dc);

    DirectExpression de_red = new DirectExpression( tp_red );
    dc.setExpression( "red", de_red );
    tp_jar.addSubPath( tp_red );


    // /foo/@blue
    ppl = new ArrayList();
    ppl.add( new PathPart( "foo", CoreDef.CHILD ) );
    ps = new PathSpec();
    ps.iPartList = ppl;
    ps.iHasAttr       = true;
    ps.iAttrLocalName = "blue"; ps.iAttrPrefix = ""; ps.iAttrNamespaceURI = "";
    TargetPath tp_foo = new TargetPath( ps );
    tp_foo.activate(1,dc);

    DirectExpression de_blue = new DirectExpression( tp_foo );
    dc.setExpression( "blue", de_blue );


    // /foo//jar/@green
    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 tp_green = new TargetPath( ps );
    tp_green.activate(1,dc);

    DirectExpression de_green = new DirectExpression( tp_green );
    dc.setExpression( "green", de_green );

    ArrayList tpl = ListUtil.make( tp_jar, tp_foo, tp_green );


    PointHandler bps = new PointHandler( tpl, dc );


    HashMap eal = new HashMap();
    ArrayList eao = new ArrayList();

    HashMap foo_am01 = new HashMap();
    foo_am01.put("blue","b01");
    ArrayList foo_ao01 = new ArrayList();
    foo_ao01.add("blue");

    HashMap jar_am01 = new HashMap();
    jar_am01.put("red","r01");
    jar_am01.put("green","g01");
    ArrayList jar_ao01 = new ArrayList();
    jar_ao01.add("red");
    jar_ao01.add("green");

    HashMap jar_am02 = new HashMap();
    jar_am02.put("red","r02");
    jar_am02.put("green","g02");
    ArrayList jar_ao02 = new ArrayList();
    jar_ao02.add("red");
    jar_ao02.add("green");

    HashMap jar_am03 = new HashMap();
    jar_am03.put("red","r03");
    jar_am03.put("green","g03");
    ArrayList jar_ao03 = new ArrayList();
    jar_ao03.add("red");
    jar_ao03.add("green");

    System.out.println( "\n"+dc.toString()+"\n" );

    bps.handlePoint( (new StartPoint( TestUtil.makeNameInfo("foo"),foo_am01,foo_ao01,true )) );
    bps.handlePoint( (new StartPoint(  TestUtil.makeNameInfo("bar"),eal,eao,true )) );
    bps.handlePoint( (new StartPoint(   TestUtil.makeNameInfo("xyz"),eal,eao,true )) );
    bps.handlePoint( (new EndPoint(     TestUtil.makeNameInfo("xyz"),"" )) );
    bps.handlePoint( (new StartPoint(   TestUtil.makeNameInfo("jar"),jar_am01,jar_ao01,true )) );
    bps.handlePoint( (new StartPoint(    TestUtil.makeNameInfo("qwe"),eal,eao,true )) );
    bps.handlePoint( (new EndPoint(      TestUtil.makeNameInfo("qwe"),"" )) );
    bps.handlePoint( (new EndPoint(     TestUtil.makeNameInfo("jar"),"" )) );
    bps.handlePoint( (new EndPoint(    TestUtil.makeNameInfo("bar"),"" )) );
    bps.handlePoint( (new StartPoint(  TestUtil.makeNameInfo("rty"),eal,eao,true )) );
    bps.handlePoint( (new EndPoint(    TestUtil.makeNameInfo("rty"),"" )) );
    bps.handlePoint( (new StartPoint(  TestUtil.makeNameInfo("bar"),eal,eao,true )) );
    bps.handlePoint( (new StartPoint(   TestUtil.makeNameInfo("jar"),jar_am02,jar_ao02,true )) );
    bps.handlePoint( (new StartPoint(    TestUtil.makeNameInfo("jar"),jar_am03,jar_ao03,true )) );
    bps.handlePoint( (new EndPoint(      TestUtil.makeNameInfo("jar"),"" )) );
    bps.handlePoint( (new EndPoint(     TestUtil.makeNameInfo("jar"),"" )) );
    bps.handlePoint( (new EndPoint(    TestUtil.makeNameInfo("bar"),"" )) );
    bps.handlePoint( (new EndPoint(   TestUtil.makeNameInfo("foo"),"" )) );

    System.out.println( "ROWS:"+TestUtil.dataToString( crt01.getRecords() ) );

  }

}





Syntax Highlighting created using the com.Ostermiller.Syntax package.
Thursday, February 23 2006 at 16:47