Skip to content

Commit 7521938

Browse files
committed
SubExpressions evaluation ok + Tests
1 parent 83a3777 commit 7521938

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

CodingSeb.ExpressionEvaluator.Tests/ExpressionEvaluatorTests.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2064,5 +2064,26 @@ public object EvaluateWithSpecificEvaluator(ExpressionEvaluator evaluator, strin
20642064
}
20652065

20662066
#endregion
2067+
2068+
#region With SubExpressions variables
2069+
2070+
[Test]
2071+
public void EvaluateWithSubExpressionsVariables()
2072+
{
2073+
ExpressionEvaluator evaluator = new ExpressionEvaluator();
2074+
2075+
evaluator.Variables["a"] = 1;
2076+
evaluator.Variables["b"] = 2;
2077+
evaluator.Variables["c"] = new SubExpression("a+b");
2078+
evaluator.Variables["d"] = new SubExpression("c+3");
2079+
2080+
evaluator.Evaluate("a").ShouldBe(1);
2081+
evaluator.Evaluate("b").ShouldBe(2);
2082+
evaluator.Evaluate("c").ShouldBe(3);
2083+
evaluator.Evaluate("d").ShouldBe(6);
2084+
evaluator.Evaluate("d-a").ShouldBe(5);
2085+
}
2086+
2087+
#endregion
20672088
}
20682089
}

CodingSeb.ExpressionEvaluator/ExpressionEvaluator.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/******************************************************************************************************
22
Title : ExpressionEvaluator (https://github.com/codingseb/ExpressionEvaluator)
3-
Version : 1.4.8.1
3+
Version : 1.4.8.2
44
(if last digit (the forth) is not a zero, the version is an intermediate version and can be unstable)
55
66
Author : Coding Seb
@@ -2751,6 +2751,7 @@ protected virtual object ProcessStack(Stack<object> stack)
27512751
{
27522752
List<object> list = stack
27532753
.Select(e => e is ValueTypeNestingTrace valueTypeNestingTrace ? valueTypeNestingTrace.Value : e)
2754+
.Select(e => e is SubExpression subExpression ? Evaluate(subExpression.Expression) : e)
27542755
.ToList();
27552756

27562757
OperatorsEvaluations.ToList().ForEach((IDictionary<ExpressionOperator, Func<dynamic, dynamic, object>> operatorEvalutationsDict) =>

0 commit comments

Comments
 (0)