Rearrangements
Migrate to Sdk projects. Migrate tests to xUnit. Bump version 0.2.3. Migrate to NetStandar2.0.
This commit is contained in:
@@ -1,230 +1,229 @@
|
||||
using System.IO;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using Xunit;
|
||||
|
||||
namespace VAR.ExpressionEvaluator.Tests
|
||||
{
|
||||
[TestClass()]
|
||||
public class TokenizerTests
|
||||
{
|
||||
[TestMethod()]
|
||||
[Fact]
|
||||
public void Tokenizer__Plus()
|
||||
{
|
||||
var testString = "10 + 20";
|
||||
var t = new Tokenizer(new StringReader(testString));
|
||||
|
||||
// "10"
|
||||
Assert.AreEqual(t.Token, Token.Number);
|
||||
Assert.AreEqual(t.Number, 10);
|
||||
Assert.Equal(Token.Number, t.Token);
|
||||
Assert.Equal(10, t.Number);
|
||||
t.NextToken();
|
||||
|
||||
// "+"
|
||||
Assert.AreEqual(t.Token, Token.Plus);
|
||||
Assert.Equal(Token.Plus, t.Token);
|
||||
t.NextToken();
|
||||
|
||||
// "20"
|
||||
Assert.AreEqual(t.Token, Token.Number);
|
||||
Assert.AreEqual(t.Number, 20);
|
||||
Assert.Equal(Token.Number, t.Token);
|
||||
Assert.Equal(20, t.Number);
|
||||
t.NextToken();
|
||||
|
||||
Assert.AreEqual(t.Token, Token.EOF);
|
||||
Assert.Equal(Token.EOF, t.Token);
|
||||
}
|
||||
|
||||
[TestMethod()]
|
||||
[Fact]
|
||||
public void Tokenizer__PlusMinusAndDecimal()
|
||||
{
|
||||
var testString = "10 + 20 - 30.123";
|
||||
var t = new Tokenizer(new StringReader(testString));
|
||||
|
||||
// "10"
|
||||
Assert.AreEqual(t.Token, Token.Number);
|
||||
Assert.AreEqual(t.Number, 10);
|
||||
Assert.Equal(Token.Number, t.Token);
|
||||
Assert.Equal(10, t.Number);
|
||||
t.NextToken();
|
||||
|
||||
// "+"
|
||||
Assert.AreEqual(t.Token, Token.Plus);
|
||||
Assert.Equal(Token.Plus, t.Token);
|
||||
t.NextToken();
|
||||
|
||||
// "20"
|
||||
Assert.AreEqual(t.Token, Token.Number);
|
||||
Assert.AreEqual(t.Number, 20);
|
||||
Assert.Equal(Token.Number, t.Token);
|
||||
Assert.Equal(20, t.Number);
|
||||
t.NextToken();
|
||||
|
||||
// "-"
|
||||
Assert.AreEqual(t.Token, Token.Minus);
|
||||
Assert.Equal(Token.Minus, t.Token);
|
||||
t.NextToken();
|
||||
|
||||
// "20"
|
||||
Assert.AreEqual(t.Token, Token.Number);
|
||||
Assert.AreEqual(t.Number, 30.123m);
|
||||
Assert.Equal(Token.Number, t.Token);
|
||||
Assert.Equal(30.123m, t.Number);
|
||||
t.NextToken();
|
||||
|
||||
Assert.AreEqual(t.Token, Token.EOF);
|
||||
Assert.Equal(Token.EOF, t.Token);
|
||||
}
|
||||
|
||||
[TestMethod()]
|
||||
[Fact]
|
||||
public void Tokenizer__SimpleString()
|
||||
{
|
||||
var testString = "\"Hello World\"";
|
||||
var t = new Tokenizer(new StringReader(testString));
|
||||
|
||||
// "Hello World"
|
||||
Assert.AreEqual(t.Token, Token.String);
|
||||
Assert.AreEqual(t.Text, "Hello World");
|
||||
Assert.Equal(Token.String, t.Token);
|
||||
Assert.Equal("Hello World", t.Text);
|
||||
t.NextToken();
|
||||
|
||||
Assert.AreEqual(t.Token, Token.EOF);
|
||||
Assert.Equal(Token.EOF, t.Token);
|
||||
}
|
||||
|
||||
[TestMethod()]
|
||||
[Fact]
|
||||
public void Tokenizer__StringWithEscaping()
|
||||
{
|
||||
var testString = "\"Hello \\\"World\\\"\"";
|
||||
var t = new Tokenizer(new StringReader(testString));
|
||||
|
||||
// "Hello \"World\""
|
||||
Assert.AreEqual(t.Token, Token.String);
|
||||
Assert.AreEqual(t.Text, "Hello \"World\"");
|
||||
Assert.Equal(Token.String, t.Token);
|
||||
Assert.Equal("Hello \"World\"", t.Text);
|
||||
t.NextToken();
|
||||
|
||||
Assert.AreEqual(t.Token, Token.EOF);
|
||||
Assert.Equal(Token.EOF, t.Token);
|
||||
}
|
||||
|
||||
[TestMethod()]
|
||||
[Fact]
|
||||
public void Tokenizer__Identifiers()
|
||||
{
|
||||
var testString = "null true false _$variable1 $variable2 [;{}#]";
|
||||
var t = new Tokenizer(new StringReader(testString));
|
||||
|
||||
// "null"
|
||||
Assert.AreEqual(t.Token, Token.Identifier);
|
||||
Assert.AreEqual(t.Text, "null");
|
||||
Assert.Equal(Token.Identifier, t.Token);
|
||||
Assert.Equal("null", t.Text);
|
||||
t.NextToken();
|
||||
|
||||
// "true"
|
||||
Assert.AreEqual(t.Token, Token.Identifier);
|
||||
Assert.AreEqual(t.Text, "true");
|
||||
Assert.Equal(Token.Identifier, t.Token);
|
||||
Assert.Equal("true", t.Text);
|
||||
t.NextToken();
|
||||
|
||||
// "false"
|
||||
Assert.AreEqual(t.Token, Token.Identifier);
|
||||
Assert.AreEqual(t.Text, "false");
|
||||
Assert.Equal(Token.Identifier, t.Token);
|
||||
Assert.Equal("false", t.Text);
|
||||
t.NextToken();
|
||||
|
||||
// "_$variable1"
|
||||
Assert.AreEqual(t.Token, Token.Identifier);
|
||||
Assert.AreEqual(t.Text, "_$variable1");
|
||||
Assert.Equal(Token.Identifier, t.Token);
|
||||
Assert.Equal("_$variable1", t.Text);
|
||||
t.NextToken();
|
||||
|
||||
// "$variable2"
|
||||
Assert.AreEqual(t.Token, Token.Identifier);
|
||||
Assert.AreEqual(t.Text, "$variable2");
|
||||
Assert.Equal(Token.Identifier, t.Token);
|
||||
Assert.Equal("$variable2", t.Text);
|
||||
t.NextToken();
|
||||
|
||||
// ";{}#"
|
||||
Assert.AreEqual(t.Token, Token.Identifier);
|
||||
Assert.AreEqual(t.Text, ";{}#");
|
||||
Assert.Equal(Token.Identifier, t.Token);
|
||||
Assert.Equal(";{}#", t.Text);
|
||||
t.NextToken();
|
||||
|
||||
Assert.AreEqual(t.Token, Token.EOF);
|
||||
Assert.Equal(Token.EOF, t.Token);
|
||||
}
|
||||
|
||||
[TestMethod()]
|
||||
[Fact]
|
||||
public void Tokenizer__AllTogether()
|
||||
{
|
||||
var testString = "(10 + 20) * -30.123 + \"Hello \\\"World\\\"\" = false";
|
||||
var t = new Tokenizer(new StringReader(testString));
|
||||
|
||||
// "("
|
||||
Assert.AreEqual(t.Token, Token.ParenthesisStart);
|
||||
Assert.Equal(Token.ParenthesisStart, t.Token);
|
||||
t.NextToken();
|
||||
|
||||
// "10"
|
||||
Assert.AreEqual(t.Token, Token.Number);
|
||||
Assert.AreEqual(t.Number, 10);
|
||||
Assert.Equal(Token.Number, t.Token);
|
||||
Assert.Equal(10, t.Number);
|
||||
t.NextToken();
|
||||
|
||||
// "+"
|
||||
Assert.AreEqual(t.Token, Token.Plus);
|
||||
Assert.Equal(Token.Plus, t.Token);
|
||||
t.NextToken();
|
||||
|
||||
// "20"
|
||||
Assert.AreEqual(t.Token, Token.Number);
|
||||
Assert.AreEqual(t.Number, 20);
|
||||
Assert.Equal(Token.Number, t.Token);
|
||||
Assert.Equal(20, t.Number);
|
||||
t.NextToken();
|
||||
|
||||
// ")"
|
||||
Assert.AreEqual(t.Token, Token.ParenthesisEnd);
|
||||
Assert.Equal(Token.ParenthesisEnd, t.Token);
|
||||
t.NextToken();
|
||||
|
||||
// "*"
|
||||
Assert.AreEqual(t.Token, Token.Multiply);
|
||||
Assert.Equal(Token.Multiply, t.Token);
|
||||
t.NextToken();
|
||||
|
||||
// "-"
|
||||
Assert.AreEqual(t.Token, Token.Minus);
|
||||
Assert.Equal(Token.Minus, t.Token);
|
||||
t.NextToken();
|
||||
|
||||
// "20"
|
||||
Assert.AreEqual(t.Token, Token.Number);
|
||||
Assert.AreEqual(t.Number, 30.123m);
|
||||
Assert.Equal(Token.Number, t.Token);
|
||||
Assert.Equal(30.123m, t.Number);
|
||||
t.NextToken();
|
||||
|
||||
// "+"
|
||||
Assert.AreEqual(t.Token, Token.Plus);
|
||||
Assert.Equal(Token.Plus, t.Token);
|
||||
t.NextToken();
|
||||
|
||||
// "Hello \"World\""
|
||||
Assert.AreEqual(t.Token, Token.String);
|
||||
Assert.AreEqual(t.Text, "Hello \"World\"");
|
||||
Assert.Equal(Token.String, t.Token);
|
||||
Assert.Equal("Hello \"World\"", t.Text);
|
||||
t.NextToken();
|
||||
|
||||
// "="
|
||||
Assert.AreEqual(t.Token, Token.Equals);
|
||||
Assert.Equal(Token.Equals, t.Token);
|
||||
t.NextToken();
|
||||
|
||||
// "false"
|
||||
Assert.AreEqual(t.Token, Token.Identifier);
|
||||
Assert.AreEqual(t.Text, "false");
|
||||
Assert.Equal(Token.Identifier, t.Token);
|
||||
Assert.Equal("false", t.Text);
|
||||
t.NextToken();
|
||||
|
||||
Assert.AreEqual(t.Token, Token.EOF);
|
||||
Assert.Equal(Token.EOF, t.Token);
|
||||
}
|
||||
|
||||
[TestMethod()]
|
||||
[Fact]
|
||||
public void Tokenizer__MoreTokens()
|
||||
{
|
||||
var testString = "= < > <= >= == === ";
|
||||
var t = new Tokenizer(new StringReader(testString));
|
||||
|
||||
// "="
|
||||
Assert.AreEqual(t.Token, Token.Equals);
|
||||
Assert.Equal(Token.Equals, t.Token);
|
||||
t.NextToken();
|
||||
|
||||
// "<"
|
||||
Assert.AreEqual(t.Token, Token.LessThan);
|
||||
Assert.Equal(Token.LessThan, t.Token);
|
||||
t.NextToken();
|
||||
|
||||
// ">"
|
||||
Assert.AreEqual(t.Token, Token.GreaterThan);
|
||||
Assert.Equal(Token.GreaterThan, t.Token);
|
||||
t.NextToken();
|
||||
|
||||
// "<="
|
||||
Assert.AreEqual(t.Token, Token.LessOrEqualThan);
|
||||
Assert.Equal(Token.LessOrEqualThan, t.Token);
|
||||
t.NextToken();
|
||||
|
||||
// ">="
|
||||
Assert.AreEqual(t.Token, Token.GreaterOrEqualThan);
|
||||
Assert.Equal(Token.GreaterOrEqualThan, t.Token);
|
||||
t.NextToken();
|
||||
|
||||
// "=="
|
||||
Assert.AreEqual(t.Token, Token.Equals);
|
||||
Assert.Equal(Token.Equals, t.Token);
|
||||
t.NextToken();
|
||||
|
||||
// "==="
|
||||
Assert.AreEqual(t.Token, Token.ExclusiveEquals);
|
||||
Assert.Equal(Token.ExclusiveEquals, t.Token);
|
||||
t.NextToken();
|
||||
|
||||
Assert.AreEqual(t.Token, Token.EOF);
|
||||
Assert.Equal(Token.EOF, t.Token);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user