ExpressionEqualsNode: Rewrite to be less strict

This commit is contained in:
2021-09-28 20:24:14 +02:00
parent 57c5f677f5
commit 0440b418cb
4 changed files with 136 additions and 96 deletions

View File

@@ -547,6 +547,11 @@ namespace VAR.ExpressionEvaluator.Tests
Assert.False((bool?)Parser.EvaluateString("true and false"));
Assert.True((bool?)Parser.EvaluateString("true and true"));
Assert.False((bool?)Parser.EvaluateString("False And False"));
Assert.False((bool?)Parser.EvaluateString("False And True"));
Assert.False((bool?)Parser.EvaluateString("True And False"));
Assert.True((bool?)Parser.EvaluateString("True And True"));
Assert.False((bool?)Parser.EvaluateString("false && false"));
Assert.False((bool?)Parser.EvaluateString("false && true"));
Assert.False((bool?)Parser.EvaluateString("true && false"));
@@ -561,6 +566,11 @@ namespace VAR.ExpressionEvaluator.Tests
Assert.True((bool?)Parser.EvaluateString("true or false"));
Assert.True((bool?)Parser.EvaluateString("true or true"));
Assert.False((bool?)Parser.EvaluateString("False Or False"));
Assert.True((bool?)Parser.EvaluateString("False Or True"));
Assert.True((bool?)Parser.EvaluateString("True Or False"));
Assert.True((bool?)Parser.EvaluateString("True Or True"));
Assert.False((bool?)Parser.EvaluateString("false || false"));
Assert.True((bool?)Parser.EvaluateString("false || true"));
Assert.True((bool?)Parser.EvaluateString("true || false"));
@@ -577,7 +587,6 @@ namespace VAR.ExpressionEvaluator.Tests
Assert.False((bool?)Parser.EvaluateString("not true"));
}
#endregion BooleanOps
#region Null value
@@ -621,6 +630,40 @@ namespace VAR.ExpressionEvaluator.Tests
#endregion
#region String coercions
[Fact()]
public void StringCoercions__Var1NullEqualsStringEmpty_EqualsTrue()
{
EvaluationContext evaluationContex = new EvaluationContext();
evaluationContex.SetVariable("v1", null);
string expression = "v1 = \"\"";
object result = Parser.EvaluateString(expression, evaluationContex);
Assert.True((bool?)result);
}
[Fact()]
public void StringCoercions__Var1TrueStringEqualsTrue_EqualsTrue()
{
EvaluationContext evaluationContex = new EvaluationContext();
evaluationContex.SetVariable("v1", "True");
string expression = "v1 = true";
object result = Parser.EvaluateString(expression, evaluationContex);
Assert.True((bool?)result);
}
[Fact()]
public void StringCoercions__Var1FalseStringEqualsFalse_EqualsTrue()
{
EvaluationContext evaluationContex = new EvaluationContext();
evaluationContex.SetVariable("v1", "False");
string expression = "v1 = false";
object result = Parser.EvaluateString(expression, evaluationContex);
Assert.True((bool?)result);
}
#endregion String coercions
#region Excepctions
[Fact]