Tokenicer: Better identifier tokening.

This commit is contained in:
2019-12-02 07:56:12 +01:00
parent 13daa68c26
commit 379583607b
3 changed files with 40 additions and 5 deletions

View File

@@ -171,6 +171,17 @@ namespace VAR.ExpressionEvaluator.Tests
Assert.AreEqual(50m, result);
}
[TestMethod()]
public void Variables__Var1DivideVar2()
{
EvaluationContext evaluationContex = new EvaluationContext();
evaluationContex.SetVariable("_v1", 100);
evaluationContex.SetVariable("$v2", 20);
string expression = "_v1 / $v2";
object result = Parser.EvaluateString(expression, evaluationContex);
Assert.AreEqual(5m, result);
}
#endregion Variables
#region Funcitions

View File

@@ -90,9 +90,9 @@ namespace VAR.ExpressionEvaluator.Tests
}
[TestMethod()]
public void Tokenizer__Keywords()
public void Tokenizer__Identifiers()
{
var testString = "null true false";
var testString = "null true false _$variable1 $variable2";
var t = new Tokenizer(new StringReader(testString));
// "null"
@@ -110,6 +110,16 @@ namespace VAR.ExpressionEvaluator.Tests
Assert.AreEqual(t.Text, "false");
t.NextToken();
// "_$variable1"
Assert.AreEqual(t.Token, Token.Identifier);
Assert.AreEqual(t.Text, "_$variable1");
t.NextToken();
// "$variable2"
Assert.AreEqual(t.Token, Token.Identifier);
Assert.AreEqual(t.Text, "$variable2");
t.NextToken();
Assert.AreEqual(t.Token, Token.EOF);
}