IExpressionNode basic implementations.

This commit is contained in:
2019-12-01 02:03:47 +01:00
parent dc18d28b54
commit 3467697552
9 changed files with 198 additions and 0 deletions

View File

@@ -0,0 +1,64 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace VAR.ExpressionEvaluator.Tests
{
[TestClass()]
public class ExpressionBinaryNodeTests
{
[TestMethod()]
public void ExpressionBinaryNode__Plus()
{
var expr = new ExpressionBinaryNode(
leftNode: new ExpressionNumberNode(10),
rightNode: new ExpressionNumberNode(20),
operation: (a, b) => (decimal)a + (decimal)b
);
var result = expr.Eval();
Assert.AreEqual(30m, result);
}
[TestMethod()]
public void ExpressionBinaryNode__Minus()
{
var expr = new ExpressionBinaryNode(
leftNode: new ExpressionNumberNode(10),
rightNode: new ExpressionNumberNode(20),
operation: (a, b) => (decimal)a - (decimal)b
);
var result = expr.Eval();
Assert.AreEqual(-10m, result);
}
[TestMethod()]
public void ExpressionBinaryNode__Multiply()
{
var expr = new ExpressionBinaryNode(
leftNode: new ExpressionNumberNode(10),
rightNode: new ExpressionNumberNode(20),
operation: (a, b) => (decimal)a * (decimal)b
);
var result = expr.Eval();
Assert.AreEqual(200m, result);
}
[TestMethod()]
public void ExpressionBinaryNode__Division()
{
var expr = new ExpressionBinaryNode(
leftNode: new ExpressionNumberNode(10),
rightNode: new ExpressionNumberNode(5),
operation: (a, b) => (decimal)a / (decimal)b
);
var result = expr.Eval();
Assert.AreEqual(2m, result);
}
}
}

View File

@@ -0,0 +1,29 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace VAR.ExpressionEvaluator.Tests
{
[TestClass()]
public class ExpressionNumberNodeTests
{
[TestMethod()]
public void ExpressionNumberNode__One()
{
IExpressionNode node = new ExpressionNumberNode(1);
Assert.AreEqual(1m, node.Eval());
}
[TestMethod()]
public void ExpressionNumberNode__Two()
{
IExpressionNode node = new ExpressionNumberNode(2);
Assert.AreEqual(2m, node.Eval());
}
[TestMethod()]
public void ExpressionNumberNode__OneHundredDotFortyFive()
{
IExpressionNode node = new ExpressionNumberNode(100.45m);
Assert.AreEqual(100.45m, node.Eval());
}
}
}

View File

@@ -0,0 +1,30 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace VAR.ExpressionEvaluator.Tests
{
[TestClass()]
public class ExpressionStringNodeTests
{
[TestMethod()]
public void ExpressionNumberNode__Hello()
{
IExpressionNode node = new ExpressionStringNode("Hello");
Assert.AreEqual("Hello", node.Eval());
}
[TestMethod()]
public void ExpressionNumberNode__World()
{
IExpressionNode node = new ExpressionStringNode("World");
Assert.AreEqual("World", node.Eval());
}
[TestMethod()]
public void ExpressionNumberNode__Hello_World()
{
IExpressionNode node = new ExpressionStringNode("Hello World");
Assert.AreEqual("Hello World", node.Eval());
}
}
}

View File

@@ -51,6 +51,9 @@
</Otherwise>
</Choose>
<ItemGroup>
<Compile Include="ExpressionBinaryNodeTests.cs" />
<Compile Include="ExpressionNumberNodeTests.cs" />
<Compile Include="ExpressionStringNodeTests.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="TokenizerTests.cs" />
</ItemGroup>