public static async ValueTask <DataModelValue> GetContent(IValueEvaluator?contentBodyEvaluator, IObjectEvaluator?contentExpressionEvaluator, IExecutionContext executionContext, CancellationToken token) { if (executionContext is null) { throw new ArgumentNullException(nameof(executionContext)); } if (contentExpressionEvaluator is not null) { var obj = await contentExpressionEvaluator.EvaluateObject(executionContext, token).ConfigureAwait(false); return(DataModelValue.FromObject(obj).AsConstant()); } if (contentBodyEvaluator is IObjectEvaluator objectEvaluator) { var obj = await objectEvaluator.EvaluateObject(executionContext, token).ConfigureAwait(false); return(DataModelValue.FromObject(obj).AsConstant()); } if (contentBodyEvaluator is IStringEvaluator stringEvaluator) { var str = await stringEvaluator.EvaluateString(executionContext, token).ConfigureAwait(false); return(new DataModelValue(str)); } return(default);
public void ValuesOfObjectPropertiesShouldBeConcatenatedThroughValue_IfRootIsComplexObject() { // arrange var v = DataModelValue.FromObject(new { prop = "1", obj = new { prop1 = "1", prop2 = "1" } }); // act var value = new DataModelXPathNavigator(v).Evaluate("string(.)"); // assert Assert.AreEqual(expected: "111", value); }
public void ValueOfObjectPropertyShouldBeAvailableThroughValue_IfRootIsObject() { // arrange var v = DataModelValue.FromObject(new { prop = "value" }); // act var value = new DataModelXPathNavigator(v).Evaluate("string(prop)"); // assert Assert.AreEqual(expected: "value", value); }
public void LocalNameShouldBeEmpty_IfTypeIsList() { // arrange var v = DataModelValue.FromObject(new { key = "value" }); // act var value = new DataModelXPathNavigator(v); // assert Assert.AreEqual(expected: "", value.LocalName); }
public void LocalNameShouldBeText_IfTypeIsNumeric() { // arrange var v = DataModelValue.FromObject(55); // act var value = new DataModelXPathNavigator(v); // assert Assert.AreEqual(expected: "#text", value.LocalName); }
public void LocalNameShouldBePropName_IfTypeIsList() { // arrange var v = DataModelValue.FromObject(new { key = "value" }); // act var value = new DataModelXPathNavigator(v); value.MoveToFirstChild(); // assert Assert.AreEqual(expected: "key", value.LocalName); }
public void CanSelectSubNode_IfRootIsComplexObject() { // arrange var v = DataModelValue.FromObject(new { /*prop = "value", */ obj = new { prop1 = "val1", prop2 = "target" } }); // act var value = new DataModelXPathNavigator(v).Evaluate("string(obj/prop2)"); // assert Assert.AreEqual(expected: "target", value); }
public void TempTest() { // arrange var n = DataModelValue.FromObject(new { child1 = "val1", child2 = "val2" }); var v = DataModelValue.FromObject(new { key = "value" }); var nNav = new DataModelXPathNavigator(n); var vNav = new DataModelXPathNavigator(v); vNav.MoveToFirstChild(); // act vNav.ReplaceChildren(new XPathObject(nNav.Evaluate("child::*") !)); // assert v.AsList().TryGet(key: "key", caseInsensitive: false, out var v1); v1.Value.AsList().TryGet(key: "child1", caseInsensitive: false, out var v2); Assert.AreEqual(expected: "val1", v2.Value.AsString()); }
public virtual async ValueTask Execute(IExecutionContext executionContext, CancellationToken token) { if (executionContext is null) { throw new ArgumentNullException(nameof(executionContext)); } var data = default(DataModelValue); if (ExpressionEvaluator is not null) { var obj = await ExpressionEvaluator.EvaluateObject(executionContext, token).ConfigureAwait(false); data = DataModelValue.FromObject(obj).AsConstant(); } await executionContext.Log(LogLevel.Info, _log.Label, data, token : token).ConfigureAwait(false); }
private async ValueTask <DataModelValue> Evaluate(IValueEvaluator objectEvaluator, IExecutionContext executionContext, CancellationToken token) { switch (_expectedValueType) { case ExpectedValueType.String when objectEvaluator is IStringEvaluator evaluator: return(await evaluator.EvaluateString(executionContext, token).ConfigureAwait(false)); case ExpectedValueType.Integer when objectEvaluator is IIntegerEvaluator evaluator: return(await evaluator.EvaluateInteger(executionContext, token).ConfigureAwait(false)); case ExpectedValueType.Boolean when objectEvaluator is IBooleanEvaluator evaluator: return(await evaluator.EvaluateBoolean(executionContext, token).ConfigureAwait(false)); } var obj = await((IObjectEvaluator)objectEvaluator).EvaluateObject(executionContext, token).ConfigureAwait(false); return(DataModelValue.FromObject(obj)); }
public async ValueTask <DataModelValue> Evaluate(IExecutionContext executionContext, CancellationToken token) { var obj = await _doneDataEvaluator.EvaluateObject(executionContext, token).ConfigureAwait(false); return(DataModelValue.FromObject(obj)); }