return d.intValue();
}
public void invokeTest(final String testPath) throws Exception {
XPath xpath = XPathFactory.newInstance().newXPath();
NamespaceBinder resolver = new NamespaceBinder();
resolver.declarePrefix(CATALONG_URI_PREFIX, CATALONG_URI);
xpath.setNamespaceContext(resolver);
final Document catalog = catalogPool.borrowObject();
try {
NodeList rs = (NodeList) xpath.evaluate(testPath, catalog, XPathConstants.NODESET);
final int rslen = rs.getLength();
for(int i = 0; i < rslen; i++) {
if(doPrint) {
println("\n------------------------------------------------");
}
final StaticContext statEnv = new StaticContext();
statEnv.setConstructionModeStrip(true);
Node testCase = rs.item(i);
final String testName = xpath.evaluate("./@name", testCase);
final String testFilePath = xpath.evaluate("./@FilePath", testCase);
final String queryFileName = xpath.evaluate("./*[local-name()='query']/@name", testCase);
File queryFile = new File(xqtsQueryPath, testFilePath + queryFileName + ".xq");
final URI baseUri = new File(xqtsQueryPath, testFilePath).toURI();
XQueryModule xqmod = new XQueryModule();
{// ((//*:test-group)//*:test-case)/*:module
NodeList moduleNodes = (NodeList) xpath.evaluate("./*[local-name()='module']", testCase, XPathConstants.NODESET);
final int modcount = moduleNodes.getLength();
if(modcount > 0) {
ModuleManager moduleManager = statEnv.getModuleManager();
SimpleModuleResolver modResolver = new SimpleModuleResolver();
moduleManager.setModuleResolver(modResolver);
for(int j = 0; j < modcount; j++) {
Node moduleNode = moduleNodes.item(j);
String moduleId = moduleNode.getTextContent();
String moduleFileStr = xpath.evaluate("/*[local-name()='test-suite']/*[local-name()='sources']/*[local-name()='module']/@FileName[../@ID='"
+ moduleId + "']", catalog);
File moduleFile = new File(xqtsDir, moduleFileStr + ".xq");
String physical = moduleFile.toURI().toString();
String logical = xpath.evaluate("./@namespace", moduleNode);
modResolver.addMappingRule(logical, physical);
}
}
}
{// ((//*:test-group)//*:test-case)/*:input-file
NodeList vars1 = (NodeList) xpath.evaluate("./*[local-name()='input-file']/@variable", testCase, XPathConstants.NODESET);
loadVariables(vars1, testCase, xqmod, statEnv, xpath, catalog, false);
}
{ // ((//*:test-group)//*:test-case)/*:input-URI
NodeList vars2 = (NodeList) xpath.evaluate("./*[local-name()='input-URI']/@variable", testCase, XPathConstants.NODESET);
loadVariables(vars2, testCase, xqmod, statEnv, xpath, catalog, true);
}
{// ((//*:test-group)//*:test-case)/*:defaultCollection
String colId = xpath.evaluate("./*[local-name()='defaultCollection']/text()", testCase);
if(colId != null) {
NodeList list = (NodeList) xpath.evaluate("/*[local-name()='test-suite']/*[local-name()='sources']/*[local-name()='collection'][@ID='"
+ colId + "']/*[local-name()='input-document']/text()", catalog, XPathConstants.NODESET);
final int listlen = list.getLength();
if(listlen > 0) {
final Map<String, DTMDocument> defaultCollectionMap = new HashMap<String, DTMDocument>(listlen);
for(int j = 0; j < listlen; j++) {
String name = list.item(j).getTextContent();
String docName = name + ".xml";
DTMDocument testDataDoc = _docCache.get(name);
if(testDataDoc == null) {
File testDataFile = new File(xqtsDir, docName);
DocumentTableModel dtm = new DocumentTableModel(false);
dtm.loadDocument(new FileInputStream(testDataFile));
testDataDoc = dtm.documentNode();
_docCache.put(name, testDataDoc);
}
defaultCollectionMap.put(docName, testDataDoc);
// import namespace decl
Map<String, String> nsmap = testDataDoc.documentTable().getDeclaredNamespaces();
NamespaceBinder nsResolver = statEnv.getStaticalyKnownNamespaces();
nsResolver.declarePrefixs(nsmap);
}
statEnv.setDefaultCollection(defaultCollectionMap);
}
}
}