Fix ExpressionEqualsNode not comparing null and string
This commit is contained in:
@@ -495,6 +495,46 @@ namespace VAR.ExpressionEvaluator.Tests
|
|||||||
Assert.False((bool?)result);
|
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
|
#endregion Relations
|
||||||
|
|
||||||
#region BooleanOps
|
#region BooleanOps
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ namespace VAR.ExpressionEvaluator
|
|||||||
{
|
{
|
||||||
value = ((DateTime)value).ToString("s");
|
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);
|
value = Convert.ToDecimal(value);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,11 @@ namespace VAR.ExpressionEvaluator
|
|||||||
return string.Compare((string)leftValue, (string)rightValue) == 0;
|
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 (leftValue is string)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty((string)leftValue))
|
if (string.IsNullOrEmpty((string)leftValue))
|
||||||
|
|||||||
Reference in New Issue
Block a user