diff --git a/VAR.ExpressionEvaluator.Tests/ParserTests.cs b/VAR.ExpressionEvaluator.Tests/ParserTests.cs index 31d59af..b8402da 100644 --- a/VAR.ExpressionEvaluator.Tests/ParserTests.cs +++ b/VAR.ExpressionEvaluator.Tests/ParserTests.cs @@ -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 @@ -252,6 +265,14 @@ namespace VAR.ExpressionEvaluator.Tests object result = Parser.EvaluateString(expression); 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() diff --git a/VAR.ExpressionEvaluator/Parser.cs b/VAR.ExpressionEvaluator/Parser.cs index c6744e5..be23c76 100644 --- a/VAR.ExpressionEvaluator/Parser.cs +++ b/VAR.ExpressionEvaluator/Parser.cs @@ -239,15 +239,18 @@ namespace VAR.ExpressionEvaluator { _tokenizer.NextToken(); var parameters = new List(); - 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) {