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); 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 #endregion Functions
#region Strings #region Strings
@@ -253,6 +266,14 @@ namespace VAR.ExpressionEvaluator.Tests
Assert.Equal("Hello World", result); 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] [Fact]
public void Strings__Contatenate_Hello_World_WithVariables() public void Strings__Contatenate_Hello_World_WithVariables()
{ {

View File

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