Fix functions without parameters.

This commit is contained in:
2022-03-01 19:13:57 +01:00
parent e7736f26b7
commit 551da30a7e
2 changed files with 30 additions and 6 deletions

View File

@@ -241,6 +241,19 @@ namespace VAR.ExpressionEvaluator.Tests
Assert.Equal(4m, result);
}
[Fact]
public void Functions__ZeroParameters()
{
EvaluationContext evaluationContex = new EvaluationContext();
evaluationContex.SetFunction("constant", (parameters) =>
{
return 9m;
});
string expression = "constant()";
object result = Parser.EvaluateString(expression, evaluationContex);
Assert.Equal(9m, result);
}
#endregion Functions
#region Strings
@@ -253,6 +266,14 @@ namespace VAR.ExpressionEvaluator.Tests
Assert.Equal("Hello World", result);
}
[Fact]
public void Strings__Contatenate_Hello_World_SimpleQuotes()
{
string expression = "'Hello' + ' ' +'World'";
object result = Parser.EvaluateString(expression);
Assert.Equal("Hello World", result);
}
[Fact]
public void Strings__Contatenate_Hello_World_WithVariables()
{

View File

@@ -239,15 +239,18 @@ namespace VAR.ExpressionEvaluator
{
_tokenizer.NextToken();
var parameters = new List<IExpressionNode>();
while (true)
if (_tokenizer.Token != Token.ParenthesisEnd)
{
parameters.Add(ParseBooleanOp());
if (_tokenizer.Token == Token.Comma)
while (true)
{
_tokenizer.NextToken();
continue;
parameters.Add(ParseBooleanOp());
if (_tokenizer.Token == Token.Comma)
{
_tokenizer.NextToken();
continue;
}
break;
}
break;
}
if (_tokenizer.Token != Token.ParenthesisEnd)
{