private bool TryAddExpressionParameterr([NotNull] DynamicContextSettings dynamicContextSettings, [NotNull] XmlQualifiedName parameterName, [NotNull] string select, [NotNull] XPathSettings settings) { Assert.ArgumentNotNull(dynamicContextSettings, "dynamicContextSettings"); Assert.ArgumentNotNull(parameterName, "parameterName"); Assert.ArgumentNotNull(select, "select"); Assert.ArgumentNotNull(settings, "settings"); Log.LogMessage(MessageImportance.Low, "adding parameter '{0}' as expression '{1}'", parameterName, select); try { // TODO: Set base URI, handle errors differently var selectExpr = XPath.Compile(select, settings); if (selectExpr == null) { Log.LogWarning("Parameter '{0}' has invalid value '{1}'", parameterName, select); return(false); } var definition = selectExpr.Evaluate(dynamicContextSettings); dynamicContextSettings.Parameters.Add(parameterName, definition); return(true); } catch (XdmException e) { LogXdmException(Severity.Error, e.InnerException); return(false); } }
public override bool TestAssertion(string assertion) { bool DocOK = true; bool FileOK = true; if (resultDocument != null) { XPathSettings xpathSettings = new XPathSettings(nameTable) { ContextItemType = XdmType.Node }; var xpath = XPath.Compile(assertion, xpathSettings); var contextItem = resultDocument.CreateNavigator(); var settings = new DynamicContextSettings { ContextItem = contextItem }; DocOK = xpath.EvaluateToItem(contextItem).ValueAsBoolean; } if (resultFile != null) { XdmDocument resultDoc; using (var reader = XmlReader.Create(resultFile, xmlReaderSettings)) { resultDoc = new XdmDocument(reader); reader.Close(); } XPathSettings xpathSettings = new XPathSettings(nameTable) { ContextItemType = XdmType.Node }; var xpath = XPath.Compile(assertion, xpathSettings); var contextItem = resultDoc.CreateNavigator(); var settings = new DynamicContextSettings { ContextItem = contextItem }; FileOK = xpath.EvaluateToItem(contextItem).ValueAsBoolean; } return(DocOK && FileOK); }