// $Header$ package org.exist.xmldb; import junit.framework.TestCase; import org.xmldb.api.*; import org.xmldb.api.base.*; import org.xmldb.api.modules.*; import org.exist.storage.DBBroker; public class ResourceSetTest extends TestCase { String XPathPrefix; String query1; String query2; int expected; private final static String URI = "xmldb:exist://" + DBBroker.ROOT_COLLECTION; private final static String DRIVER = "org.exist.xmldb.DatabaseImpl"; /** JUnit style constructor */ public ResourceSetTest(String arg0) { super(arg0); } protected void setUp() { try { // initialize driver Class cl = Class.forName(DRIVER); Database database = (Database) cl.newInstance(); database.setProperty("create-database", "true"); DatabaseManager.registerDatabase(database); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (XMLDBException e) { // TODO Auto-generated catch block fail(e.getMessage()); } // Currently (2003-04-02) fires an exception in FunPosition: XPathPrefix = "xmldb:document('" + DBBroker.ROOT_COLLECTION + "/test/shakes.xsl')/*/*"; // "xmldb:document('" + DBBroker.ROOT_COLLECTION + "/test/macbeth.xml')/*/*"; query1 = XPathPrefix + "[position()>=5 ]"; query2 = XPathPrefix + "[position()<=10]"; expected = 87; // This validates OK: // XPathPrefix = "xmldb:document('" + DBBroker.ROOT_COLLECTION + "/test/hamlet.xml')//LINE"; // query1 = XPathPrefix + "[ .&='funeral' ]"; // count=4 // query2 = XPathPrefix + "[.&='dirge']"; // count=1, intersection=1 // expected = 1; } public void testIntersection() { try { // try to get collection Collection testCollection = DatabaseManager.getCollection(URI + "/test"); assertNotNull(testCollection); XPathQueryService service = (XPathQueryService) testCollection.getService("XPathQueryService", "1.0"); System.out.println("query1: " + query1); ResourceSet result1 = service.query(query1); System.out.println("query1: getSize()=" + result1.getSize()); System.out.println("query2: " + query2); ResourceSet result2 = service.query(query2); System.out.println("query2: getSize()=" + result2.getSize()); assertEquals( "size of intersection of "+query1+" and "+query2+" yields ", expected, ( ResourceSetHelper.intersection(result1, result2) ).getSize() ); } catch(XMLDBException e) { fail(e.getMessage()); } } /* useless if we catch the relevant exception in the debugger: public static void main(String args[]){ ResourceSetTest t = new ResourceSetTest("ResourceSetTest"); t.setUp(); t.testIntersection(); } ****/ }