Package xquery.xqdoc

Source Code of xquery.xqdoc.RunTests

package xquery.xqdoc;


import static org.junit.Assert.fail;

import java.io.File;

import org.exist.source.FileSource;
import org.exist.source.Source;
import org.exist.util.XMLFilenameFilter;
import org.exist.xmldb.DatabaseInstanceManager;
import org.exist.xmldb.XQueryService;
import org.exist.xmldb.XmldbURI;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xmldb.api.DatabaseManager;
import org.xmldb.api.base.Collection;
import org.xmldb.api.base.Database;
import org.xmldb.api.base.ResourceSet;
import org.xmldb.api.base.XMLDBException;
import org.xmldb.api.modules.CollectionManagementService;
import org.xmldb.api.modules.XMLResource;

public class RunTests {

    private final static String TEST_DIR = "extensions/xqdoc/test/src/xquery/xqdoc";

    private final static String TEST_QUERY = TEST_DIR + "/runTests.xql";

  private static File[] files;
  private static Collection testCollection;

  @Test
  public void run() {
    try {
      XQueryService xqs = (XQueryService) testCollection.getService("XQueryService", "1.0");
      Source query = new FileSource(new File(TEST_QUERY), "UTF-8", false);
      for (File file : files) {
        xqs.declareVariable("doc", file.getName());
        ResourceSet result = xqs.execute(query);
        XMLResource resource = (XMLResource) result.getResource(0);
                System.out.println(resource.getContent());
        Element root = (Element) resource.getContentAsDOM();
        NodeList tests = root.getElementsByTagName("test");
        for (int i = 0; i < tests.getLength(); i++) {
          Element test = (Element) tests.item(i);
          String passed = test.getAttribute("pass");
          if (passed.equals("false")) {
            System.err.println(resource.getContent());
            fail("Test " + test.getAttribute("n") + " failed");
          }
        }
      }
    } catch (XMLDBException e) {
      e.printStackTrace();
      fail(e.getMessage());
    }
  }
 
  @BeforeClass
  public static void setUpBeforeClass() throws Exception {
    // initialize driver
    Class<?> cl = Class.forName("org.exist.xmldb.DatabaseImpl");
    Database database = (Database) cl.newInstance();
    database.setProperty("create-database", "true");
    DatabaseManager.registerDatabase(database);

    Collection root =
      DatabaseManager.getCollection(XmldbURI.LOCAL_DB, "admin", "");
    CollectionManagementService service =
      (CollectionManagementService) root.getService("CollectionManagementService", "1.0");
    testCollection = service.createCollection("test");
    Assert.assertNotNull(testCollection);
       
    File dir = new File(TEST_DIR);
    files = dir.listFiles(new XMLFilenameFilter());
    for (File file : files) {
      XMLResource resource = (XMLResource) testCollection.createResource(file.getName(), "XMLResource");
      resource.setContent(file);
      testCollection.storeResource(resource);
    }
  }

  @AfterClass
  public static void tearDownAfterClass() {
    files = null;
    try {
      Collection root =
        DatabaseManager.getCollection(XmldbURI.LOCAL_DB, "admin", "");
       
      DatabaseInstanceManager dim =
          (DatabaseInstanceManager) root.getService(
              "DatabaseInstanceManager", "1.0");
      dim.shutdown();
    } catch (Exception e) {
      e.printStackTrace();
      fail(e.getMessage());
    }
        testCollection = null;
  }

}
TOP

Related Classes of xquery.xqdoc.RunTests

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.