48 lines
2.0 KiB
JavaScript
48 lines
2.0 KiB
JavaScript
function checkSnapshot(comment, actual, expected) {
|
|
if (actual.snapshotLength != expected.length) {
|
|
testFailed(comment + " incorrect length (expected " + expected.length + ", actual " + actual.snapshotLength + ")");
|
|
return;
|
|
}
|
|
|
|
for (i = 0; i < actual.snapshotLength; ++i) {
|
|
if (actual.snapshotItem(i) != expected[i]) {
|
|
testFailed(comment + " item " + i + " incorrect (expected " + expected[i].nodeName + ", actual " + actual.snapshotItem(i).nodeName + ")");
|
|
return;
|
|
}
|
|
}
|
|
|
|
testPassed(comment);
|
|
}
|
|
|
|
function test(doc, context, expr, expected, nsResolver)
|
|
{
|
|
try {
|
|
if (typeof(context) == "string")
|
|
context = doc.evaluate(context, doc.documentElement, nsResolver, XPathResult.ANY_UNORDERED_NODE_TYPE, null).singleNodeValue;
|
|
if (typeof(expected) == "object") {
|
|
var result = doc.evaluate(expr, context, nsResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
|
|
checkSnapshot(expr, result, expected);
|
|
} else {
|
|
var result = doc.evaluate(expr, context, nsResolver, XPathResult.ANY_TYPE, null);
|
|
if (typeof(expected) == "number") {
|
|
if (result.numberValue == expected)
|
|
testPassed(expr);
|
|
else
|
|
testFailed(expr + ": expected " + expected + ", actual " + result.numberValue);
|
|
} else if (typeof(expected) == "string") {
|
|
if (result.stringValue == expected)
|
|
testPassed(expr);
|
|
else
|
|
testFailed(expr + ": expected '" + expected + "', actual '" + result.stringValue + "'");
|
|
} else if (typeof(expected) == "boolean") {
|
|
if (result.booleanValue == expected)
|
|
testPassed(expr);
|
|
else
|
|
testFailed(expr + ": expected '" + expected + "', actual '" + result.booleanValue + "'");
|
|
}
|
|
}
|
|
} catch (ex) {
|
|
testFailed(expr + ": raised " + ex);
|
|
}
|
|
}
|