1+ using System ;
2+ using System . Collections . Generic ;
3+ using System . Linq ;
4+ using Pidgin ;
5+ using SimpleStateMachine . StructuralSearch . Operator . Logical . Type ;
6+ using SimpleStateMachine . StructuralSearch . StructuralSearch ;
7+ using Xunit ;
8+
9+ namespace SimpleStateMachine . StructuralSearch . Tests ;
10+
11+ public static class LogicalExpressionParserTests
12+ {
13+ [ Theory ]
14+ [ InlineData ( "Equals $var$" ) ]
15+ [ InlineData ( "Contains $var$" ) ]
16+ [ InlineData ( "StartsWith $var$" ) ]
17+ [ InlineData ( "EndsWith $var$" ) ]
18+ public static void StringCompareOperationParsingShouldBeSuccess ( string input )
19+ {
20+ LogicalExpressionParser . StringCompareOperation . Before ( CommonParser . Eof ) . ParseOrThrow ( input ) ;
21+ }
22+
23+ public static IEnumerable < object [ ] > GetParameterTypeNames ( )
24+ => Enum . GetNames < ParameterType > ( ) . Select ( x => new object [ ] { $ "Is { x } " } ) ;
25+
26+ [ Theory ]
27+ [ MemberData ( nameof ( GetParameterTypeNames ) ) ]
28+ public static void IsOperationParsingShouldBeSuccess ( string input )
29+ {
30+ LogicalExpressionParser . IsOperation . Before ( CommonParser . Eof ) . ParseOrThrow ( input ) ;
31+ }
32+
33+ [ Theory ]
34+ [ InlineData ( "Match [a-z]" ) ]
35+ public static void MatchOperationParsingShouldBeSuccess ( string input )
36+ {
37+ LogicalExpressionParser . MatchOperation . Before ( CommonParser . Eof ) . ParseOrThrow ( input ) ;
38+ }
39+
40+ [ Theory ]
41+ [ InlineData ( "In 123, 456, 789" ) ]
42+ [ InlineData ( "In 123,456,789" ) ]
43+ public static void InOperationParsingShouldBeSuccess ( string input )
44+ {
45+ LogicalExpressionParser . InOperation . Before ( CommonParser . Eof ) . ParseOrThrow ( input ) ;
46+ }
47+
48+ [ Theory ]
49+ [ InlineData ( "Not 123 Equals 789" ) ]
50+ public static void NotOperationParsingShouldBeSuccess ( string input )
51+ {
52+ LogicalExpressionParser . NotOperation . Before ( CommonParser . Eof ) . ParseOrThrow ( input ) ;
53+ }
54+
55+ [ Theory ]
56+ [ InlineData ( "$var$ equals $var$" ) ]
57+ [ InlineData ( "$var$ equals \" $\" " ) ]
58+ [ InlineData ( "Not $var$ equals $var$.Lenght" ) ]
59+ [ InlineData ( "Not $var$ equals $var$.offset.Start" ) ]
60+ [ InlineData ( "$var$ equals $var$.Lenght and Not $var$ StartsWith \" 123\" " ) ]
61+ [ InlineData ( "Not $var$ equals $var$.Lenght and $var$ StartsWith \" 123\" " ) ]
62+ [ InlineData ( "$var$ Contains $var$.Lenght" ) ]
63+ [ InlineData ( "not $var$ Contains \" 123\" " ) ]
64+ [ InlineData ( "$var1$.Lenght Contains $var2$.Lenght" ) ]
65+ [ InlineData ( "$var$ Contains \" 123\" " ) ]
66+ [ InlineData ( "$var$ StartsWith $var$.Lenght" ) ]
67+ [ InlineData ( "$var$.Lenght Equals $var$.Lenght" ) ]
68+ [ InlineData ( "$var$ StartsWith \" 123\" " ) ]
69+ [ InlineData ( "$var$ EndsWith $var$.Lenght" ) ]
70+ [ InlineData ( "$var$ EndsWith \" 123\" " ) ]
71+ [ InlineData ( "$var$ Is Int" ) ]
72+ [ InlineData ( "$var$ Is DateTime" ) ]
73+ [ InlineData ( "$var$ equals $var1$ or $var2$ equals $var1$" ) ]
74+ [ InlineData ( "$var$ match [a-b]+" ) ]
75+ public static void FindRuleExprParsingShouldBeSuccess ( string input )
76+ {
77+ var t = TemplatesParser . Template ;
78+ var rule = LogicalExpressionParser . LogicalExpression . Before ( CommonParser . Eof ) . ParseOrThrow ( input ) ;
79+ var _ruleStr = rule . ToString ( ) ? . ToLower ( ) ;
80+ Assert . NotNull ( rule ) ;
81+ Assert . Equal ( input . ToLower ( ) , _ruleStr ) ;
82+ }
83+
84+ // [Theory]
85+ // [InlineData("$var$ In \"Is\", \"==\", \"!=\", \"is not\"", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
86+ // [InlineData("$var$ In (\"Is\", \"==\", \"!=\", \"is not\")", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
87+ // [InlineData("$var$ In \"Is\",\"==\",\"!=\",\"is not\"", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
88+ // [InlineData("$var$ In (\"Is\",\"==\",\"!=\",\"is not\")", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
89+ // [InlineData("$var$ In(\"Is\",\"==\",\"!=\",\"is not\")", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
90+ // [InlineData("$var$ In ( \"Is\",\"==\",\"!=\",\"is not\" ) ", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
91+ // [InlineData("$var$ In ( \"Is\",\"==\",\"!=\",\"is not\" )", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
92+ // [InlineData("$var$ In ( \"Is\",\"==\",\"!=\",\"is not\") ", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
93+ // [InlineData("$var$ In (\"Is\",\"==\",\"!=\",\"is not\" ) ", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
94+ // [InlineData("$var$ In (\"Is\",\"==\",\"!=\",\"is not\" )", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
95+ // [InlineData("$var$ In (\"Is\",\"==\",\"!=\",\"is not\") ", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
96+ // [InlineData("$var$ In( \"Is\",\"==\",\"!=\",\"is not\" ) ", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
97+ // [InlineData("$var$ In( \"Is\",\"==\",\"!=\",\"is not\" )", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
98+ // [InlineData("$var$ In( \"Is\",\"==\",\"!=\",\"is not\") ", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
99+ // [InlineData("Not ($var$ equals $var$.Lenght and $var$ StartsWith \"123\")", "Not $var$ equals $var$.Lenght and $var$ StartsWith \"123\"")]
100+ // [InlineData("Not ($var$ equals $var$.Lenght)", "Not $var$ equals $var$.Lenght")]
101+ // public static void FindRuleExprParsingShouldBeEqualsCustomResult(string ruleStr, string customResult)
102+ // {
103+ // var rule = LogicalExpressionParser.LogicalExpression.ParseOrThrow(ruleStr);
104+ // var ruleAsStr = rule.ToString()?.ToLower();
105+ // Assert.NotNull(rule);
106+ // Assert.Equal(ruleAsStr, customResult.ToLower());
107+ // }
108+ //
109+ // [Theory]
110+ // [InlineData("FindRule/NullUnionOperator.txt", "$sign$ In \"is\",\"==\",\"!=\",\"is not\"")]
111+ // [InlineData("FindRule/AssignmentNullUnionOperator.txt", "$sign$ In \"is\",\"==\",\"!=\",\"is not\"")]
112+ // public static void FindRuleParsingFromFileShouldBeSuccess(string filePath, params string[] customResult)
113+ // {
114+ // var ruleStr = File.ReadAllText(filePath);
115+ // var rules = ruleStr.Split(Constant.LineFeed)
116+ // .Select(StructuralSearch.StructuralSearch.ParseFindRule);
117+ // var rulesAsStr = rules.Select(x => x.ToString()).ToArray();
118+ //
119+ // Assert.True(customResult.SequenceEqual(rulesAsStr));
120+ // }
121+ }
0 commit comments