108 lines
3.3 KiB
C#
108 lines
3.3 KiB
C#
using DD.Persistence.Filter.Models;
|
|
using DD.Persistence.Filter.Models.Enumerations;
|
|
using DD.Persistence.Filter.TreeBuilder;
|
|
using Newtonsoft.Json;
|
|
|
|
namespace DD.Persistence.Test;
|
|
public class TreeBuilderTest
|
|
{
|
|
[Fact]
|
|
public void TreeBuildingShouldBuilt()
|
|
{
|
|
//arrange
|
|
var treeString = "(\"A\"==1)||(\"B\"==2)&&(\"C\"==3)||((\"D\"==4)||(\"E\"==5))&&(\"F\"==6)";
|
|
|
|
//act
|
|
var root = treeString.BuildTree();
|
|
|
|
//assert
|
|
Assert.NotNull(root);
|
|
|
|
var expectedRoot = JsonConvert.SerializeObject(new TVertex(
|
|
OperationEnum.And,
|
|
new TVertex(
|
|
OperationEnum.And,
|
|
new TVertex(
|
|
OperationEnum.Or,
|
|
new TLeaf(OperationEnum.Equal, "A", 1),
|
|
new TLeaf(OperationEnum.Equal, "B", 2)
|
|
),
|
|
new TVertex(
|
|
OperationEnum.Or,
|
|
new TLeaf(OperationEnum.Equal, "C", 3),
|
|
new TVertex(
|
|
OperationEnum.Or,
|
|
new TLeaf(OperationEnum.Equal, "D", 4),
|
|
new TLeaf(OperationEnum.Equal, "E", 5)
|
|
)
|
|
)
|
|
),
|
|
new TLeaf(OperationEnum.Equal, "F", 6)
|
|
));
|
|
var actualRoot = JsonConvert.SerializeObject(root);
|
|
Assert.Equal(expectedRoot, actualRoot);
|
|
}
|
|
|
|
[Fact]
|
|
public void TreeOperationsShouldBuilt()
|
|
{
|
|
//arrange
|
|
var treeString = "(\"A\"==1)||(\"B\"!=1)||(\"C\">1)||(\"D\">=1)||(\"E\"<1)||(\"F\"<=1)";
|
|
|
|
//act
|
|
var root = treeString.BuildTree();
|
|
|
|
//assert
|
|
Assert.NotNull(root);
|
|
|
|
var expectedRoot = JsonConvert.SerializeObject(new TVertex(
|
|
OperationEnum.Or,
|
|
new TVertex(
|
|
OperationEnum.Or,
|
|
new TVertex(
|
|
OperationEnum.Or,
|
|
new TLeaf(OperationEnum.Equal, "A", 1),
|
|
new TLeaf(OperationEnum.NotEqual, "B", 1)
|
|
),
|
|
new TVertex(
|
|
OperationEnum.Or,
|
|
new TLeaf(OperationEnum.Greate, "C", 1),
|
|
new TLeaf(OperationEnum.GreateOrEqual, "D", 1)
|
|
)
|
|
),
|
|
new TVertex(
|
|
OperationEnum.Or,
|
|
new TLeaf(OperationEnum.Less, "E", 1),
|
|
new TLeaf(OperationEnum.LessOrEqual, "F", 1)
|
|
)
|
|
));
|
|
var actualRoot = JsonConvert.SerializeObject(root);
|
|
Assert.Equal(expectedRoot, actualRoot);
|
|
}
|
|
|
|
[Fact]
|
|
public void LeafValuesShouldBuilt()
|
|
{
|
|
//arrange
|
|
var treeString = "(\"A\"==1.2345)||(\"B\"==12345)||(\"C\"==\"12345\")";
|
|
|
|
//act
|
|
var root = treeString.BuildTree();
|
|
|
|
//assert
|
|
Assert.NotNull(root);
|
|
|
|
var expectedRoot = JsonConvert.SerializeObject(new TVertex(
|
|
OperationEnum.Or,
|
|
new TVertex(
|
|
OperationEnum.Or,
|
|
new TLeaf(OperationEnum.Equal, "A", 1.2345),
|
|
new TLeaf(OperationEnum.Equal, "B", 12345)
|
|
),
|
|
new TLeaf(OperationEnum.Equal, "C", "12345")
|
|
));
|
|
var actualRoot = JsonConvert.SerializeObject(root);
|
|
Assert.Equal(expectedRoot, actualRoot);
|
|
}
|
|
}
|