Package test.xui.data

Source Code of test.xui.data.TestXBaseModel

package test.xui.data;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

import junit.framework.TestCase;
import net.xoetrope.awt.XApplet;
import net.xoetrope.data.XDataSource;
import net.xoetrope.xml.XmlElement;
import net.xoetrope.xml.XmlSource;
import net.xoetrope.xui.XProject;
import net.xoetrope.xui.XProjectManager;
import net.xoetrope.xui.data.XBaseModel;
import net.xoetrope.xui.data.XModel;

public class TestXBaseModel extends TestCase
{
  XBaseModel xBaseModel = null;

  public TestXBaseModel( String name )
  {
    super( name );
  }

  protected void setUp() throws Exception
  {
    super.setUp();

    xBaseModel = new XBaseModel();

    XApplet so = new XApplet();
    XProject project = XProjectManager.getCurrentProject( so );
    XDataSource ds = new XDataSource( project );
    InputStream is = ds.getClass().getClassLoader().getResourceAsStream( "test/xui/data/people.xml" );

    XmlElement src = XmlSource.read( new BufferedReader( new InputStreamReader( is ) ) );
    src.setName( "people" );
    ds.loadTable( src, xBaseModel );

    xBaseModel.setId( "TextXBaseModel" );
    xBaseModel.setTagName( "TestNode" );
    xBaseModel.setNumAttributes( 3 );
    xBaseModel.setAttribValue( 0, "extraData", "testValue" );
    xBaseModel.setAttribValue( 2, "extraData", "moreInfo" );

    XBaseModel child = new XBaseModel();
    child.setId( "family" );
    child.setTagName( "family" );
    child.setAttribValue( 0, null, "doe" );
    xBaseModel.append( child );
  }

  protected void tearDown() throws Exception
  {
    xBaseModel = null;
    super.tearDown();
  }

  public void testSetup()
  {
    Object expectedReturn = "testValue";
    Object actualReturn = xBaseModel.get();
    assertEquals( "return value", expectedReturn, actualReturn );

    expectedReturn = "value";
    actualReturn = xBaseModel.getAttribName( 0 );
    assertEquals( "value attribute", expectedReturn, actualReturn );

    expectedReturn = "extraData";
    actualReturn = xBaseModel.getAttribName( 2 );
    assertEquals( "extra attribute", expectedReturn, actualReturn );

    expectedReturn = "moreInfo";
    actualReturn = xBaseModel.getAttribValue( 2 );
    assertEquals( "extra attribute", expectedReturn, actualReturn );
  }

  public void testGet()
  {
    String expectedReturn = "doe";
    XModel model = ((XModel)xBaseModel.get( "families/family@nationality=irish" ));
    String actualReturn = model.getAttribValueAsString( XBaseModel.VALUE_ATTRIBUTE );
    assertEquals( "get child value", expectedReturn, actualReturn );

    XModel secondModel = ((XModel)xBaseModel.get( "families/family@nationality=unknown" ));
    String actualReturn2 = secondModel.getAttribValueAsString( XBaseModel.VALUE_ATTRIBUTE );
    assertEquals( "get child value 1", expectedReturn, actualReturn2 );
    assertNotSame( model, secondModel );

    XModel childModel = ((XModel)xBaseModel.get( "families/family@nationality=irish/jane" ));
    assertEquals( childModel.getNumChildren(), 3 );
    actualReturn = secondModel.getAttribValueAsString( XBaseModel.VALUE_ATTRIBUTE );
    assertEquals( "get child value 2", expectedReturn, actualReturn2 );
    assertNotSame( model, secondModel );

    XModel childModel2 = ((XModel)xBaseModel.get( "families/family@nationality=irish/jane/brother@age=2" ));
    actualReturn = childModel2.getAttribValueAsString( childModel2.getAttribute( "value" ));
    assertEquals( "get child value 3", "james", actualReturn );

    // This is an invalid path
    XModel childModel3 = ((XModel)xBaseModel.get( "families/family@nationality=irish/jane/james@age=2" ));
    actualReturn = childModel3.getAttribValueAsString( childModel3.getAttribute( "value" ));
    assertNotSame( "get child value 4", "james", actualReturn );
  }
}
TOP

Related Classes of test.xui.data.TestXBaseModel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.