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); } }