Fix ExpressionEqualsNode not comparing null and string
This commit is contained in:
@@ -495,6 +495,46 @@ namespace VAR.ExpressionEvaluator.Tests
|
||||
Assert.False((bool?)result);
|
||||
}
|
||||
|
||||
[Fact()]
|
||||
public void Relations__Var1NullEquals666_EqualsFalse()
|
||||
{
|
||||
EvaluationContext evaluationContex = new EvaluationContext();
|
||||
evaluationContex.SetVariable("v1", null);
|
||||
string expression = "v1 = 666";
|
||||
object result = Parser.EvaluateString(expression, evaluationContex);
|
||||
Assert.False((bool?)result);
|
||||
}
|
||||
|
||||
[Fact()]
|
||||
public void Relations__Var1NullEqualsStringHello_EqualsFalse()
|
||||
{
|
||||
EvaluationContext evaluationContex = new EvaluationContext();
|
||||
evaluationContex.SetVariable("v1", null);
|
||||
string expression = "v1 = \"Hello\"";
|
||||
object result = Parser.EvaluateString(expression, evaluationContex);
|
||||
Assert.False((bool?)result);
|
||||
}
|
||||
|
||||
[Fact()]
|
||||
public void Relations__Var1666Equals666_EqualsFalse()
|
||||
{
|
||||
EvaluationContext evaluationContex = new EvaluationContext();
|
||||
evaluationContex.SetVariable("v1", 666);
|
||||
string expression = "v1 = 666";
|
||||
object result = Parser.EvaluateString(expression, evaluationContex);
|
||||
Assert.True((bool?)result);
|
||||
}
|
||||
|
||||
[Fact()]
|
||||
public void Relations__Var1HelloEqualsStringHello_EqualsFalse()
|
||||
{
|
||||
EvaluationContext evaluationContex = new EvaluationContext();
|
||||
evaluationContex.SetVariable("v1", "Hello");
|
||||
string expression = "v1 = \"Hello\"";
|
||||
object result = Parser.EvaluateString(expression, evaluationContex);
|
||||
Assert.True((bool?)result);
|
||||
}
|
||||
|
||||
#endregion Relations
|
||||
|
||||
#region BooleanOps
|
||||
|
||||
@@ -48,7 +48,7 @@ namespace VAR.ExpressionEvaluator
|
||||
{
|
||||
value = ((DateTime)value).ToString("s");
|
||||
}
|
||||
if ((value is string) == false && (value is bool) == false)
|
||||
if ((value is string) == false && (value is bool) == false && value != null)
|
||||
{
|
||||
value = Convert.ToDecimal(value);
|
||||
}
|
||||
|
||||
@@ -16,6 +16,11 @@ namespace VAR.ExpressionEvaluator
|
||||
return string.Compare((string)leftValue, (string)rightValue) == 0;
|
||||
}
|
||||
|
||||
if ((leftValue is string && rightValue == null) || (leftValue == null && rightValue is string))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (leftValue is string)
|
||||
{
|
||||
if (string.IsNullOrEmpty((string)leftValue))
|
||||
|
||||
Reference in New Issue
Block a user