if (t.comparepipeline != null) {
XProcPipeline compare = t.comparepipeline;
Hashtable<String, Vector<XdmNode>> cinputs = new Hashtable<String, Vector<XdmNode>> ();
for (String port : pipeoutputs.keySet()) {
if (compare.inputPorts.contains(port)) {
ReadablePipe pipe = pipeoutputs.get(port);
while (pipe.moreDocuments()) {
try {
XdmNode p = pipe.read();
if (!cinputs.containsKey(port)) {
cinputs.put(port, new Vector<XdmNode> ());
}
cinputs.get(port).add(p);
} catch (SaxonApiException sae) {
result.catchException(sae);
return result;
}
}
}
}
try {
pipeoutputs = runPipe(compare.pipeline, cinputs, t.outputs, null, null);
} catch (Exception err) {
result.fail(err, "Compare pipelines failed: this shouldn't happen.");
}
}
Hashtable<String,Vector<XdmNode>> results = new Hashtable<String,Vector<XdmNode>> ();
Hashtable<String,Vector<XdmNode>> expects = new Hashtable<String,Vector<XdmNode>> ();
try {
for (String port : pipeoutputs.keySet()) {
Vector<XdmNode> touts = t.outputs.get(port);
ReadablePipe pipe = pipeoutputs.get(port);
if (!results.containsKey(port)) {
results.put(port,new Vector<XdmNode>());
}
if (!expects.containsKey(port)) {
expects.put(port,new Vector<XdmNode>());
}
Vector<XdmNode> pres = results.get(port);
Vector<XdmNode> pexp = expects.get(port);
while (pipe.moreDocuments()) {
if (touts.size() > 0) {
XdmNode tdoc = touts.remove(0);
XdmNode pdoc = pipe.read();
if (t.ignoreWS) {
XPipeline pppipe = runtime.use(prettyPrint);
pppipe.writeTo("source", tdoc);
pppipe.run();
ReadablePipe rpipe = pppipe.readFrom("result");
tdoc = rpipe.read();
pppipe.reset();
pppipe.writeTo("source", pdoc);
pppipe.run();
rpipe = pppipe.readFrom("result");
pdoc = rpipe.read();
}
pres.add(pdoc);
pexp.add(tdoc);
} else {