package gr.ntua.ivml.mint.test;
import gr.ntua.ivml.mint.db.DB;
import gr.ntua.ivml.mint.persistent.DataUpload;
import gr.ntua.ivml.mint.persistent.XMLNode;
import gr.ntua.ivml.mint.persistent.XpathHolder;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.List;
import junit.framework.TestCase;
import org.apache.log4j.Logger;
public class NodeTest extends TestCase {
Logger log = Logger.getLogger( NodeTest.class );
public void testRetrieval() {
XMLNode p = DB.getXMLNodeDAO().findById(341005l, false);
XMLNode p2 = DB.getXMLNodeDAO().getDOMTree(p);
// are p and p2 equivalent?
assertEquals( p.getChildren().size(), p2.getChildren().size());
for( int i=0; i<p2.getChildren().size(); i++ ) {
assertEquals( p.getChildren().get( i ).getChecksum(), p2.getChildren().get(i).getChecksum());
}
}
public void testGetChildrenByXpath() {
DataUpload du = getTestUpload();
XpathHolder xp = du.getRootXpath();
List<XpathHolder> lxp = xp.getChildrenRecursive();
XpathHolder l5=null;
for(XpathHolder xp1: lxp ) {
if( xp1.getDepth() > 5 ) {
l5 = xp1;
break;
}
}
assertNotNull( l5 );
List<? extends XMLNode> lxn = l5.getNodes(0, 100);
assertTrue( "No results! Could happen I guess", lxn.size() > 0 );
XMLNode xn = lxn.get(0);
assertNotNull( "No example l5 node", xn);
XMLNode parent = xn.getParentNode().getParentNode();
lxn = parent.getChildrenByXpath(l5);
// now get an example node
assertTrue( "Should have result here.", lxn.size()>0);
// and somehow the node should be in here too
boolean found = false;
for( XMLNode test: lxn ) {
if( test.getNodeId() == xn.getNodeId()) found=true;
}
assertTrue( "Child node not found back", found );
}
public void testNodeKey() {
assertEquals( "b", XMLNode.num2key(1) );
assertEquals( "xkd", XMLNode.num2key( 23+10*26+3));
StringBuffer key = new StringBuffer();
long mod = 26*26;
mod *= mod;
mod *= mod;
for( int i=0; i<100; i++ ) {
key.setLength(0);
long someNum =(long) (Math.random()*mod);
someNum = someNum%mod;
key.append( XMLNode.num2key(someNum));
String safe = key.toString();
long newNum = XMLNode.popNum( key );
assertTrue( key.length() == 0 );
assertEquals( safe, someNum, newNum );
}
}
public void testWrappedXml() {
DataUpload du = getTestUpload();
XpathHolder xp = du.getItemXpath();
log.debug( "Items: " + xp.getCount());
assertTrue( xp.getCount() > 5 );
XMLNode item = xp.getNodes(5, 1).get(0);
StringWriter sw = new StringWriter();
PrintWriter out = new PrintWriter( sw );
item.toXml( out );
log.debug( "XML\n" + sw.toString());
sw = new StringWriter();
out = new PrintWriter( sw );
item.toXmlWrapped(out);
log.debug( "Wrapped XML\n" + sw.toString());
}
private DataUpload getTestUpload() {
List<DataUpload> l = DB.getDataUploadDAO().findAll();
assertTrue( "No test upload found", l.size() > 0 );
return l.get(0);
}
}