Skip to content

Commit e9304f6

Browse files
committed
new find rules
1 parent a9670f9 commit e9304f6

27 files changed

+181
-342
lines changed

src/SimpleStateMachine.StructuralSearch.Tests/FindRuleParserTests.cs

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,36 +10,41 @@ namespace SimpleStateMachine.StructuralSearch.Tests
1010
public class FindRuleParserTests
1111
{
1212
[Theory]
13-
[InlineData("equals $var$")]
14-
[InlineData("equals \"\\$\"")]
15-
[InlineData("Not equals $var$.Lenght")]
16-
[InlineData("Not equals $var$.offset.Start")]
17-
[InlineData("equals $var$.Lenght and Not StartsWith \"123\"")]
18-
[InlineData("equals $var$.Lenght and Not StartsWith \"\\\"Test\"")]
19-
[InlineData("Contains $var$.Lenght")]
20-
[InlineData("Contains \"123\"")]
21-
[InlineData("StartsWith $var$.Lenght")]
22-
[InlineData("StartsWith \"123\"")]
23-
[InlineData("EndsWith $var$.Lenght")]
24-
[InlineData("EndsWith \"123\"")]
25-
[InlineData("Match $var$.Lenght")]
26-
[InlineData("Is Int")]
27-
[InlineData("Is DateTime")]
13+
[InlineData("$var$ equals $var$")]
14+
[InlineData("$var$ equals \"\\$\"")]
15+
[InlineData("Not $var$ equals $var$.Lenght")]
16+
[InlineData("Not $var$ equals $var$.offset.Start")]
17+
[InlineData("$var$ equals $var$.Lenght and Not $var$ StartsWith \"123\"")]
18+
[InlineData("Not $var$ equals $var$.Lenght and $var$ StartsWith \"123\"")]
19+
[InlineData("$var$ equals $var$.Lenght and Not $var$ StartsWith \"\\\"Test\"")]
20+
[InlineData("$var$ Contains $var$.Lenght")]
21+
[InlineData("$var1$.Lenght Contains $var2$.Lenght")]
22+
[InlineData("$var$ Contains \"123\"")]
23+
[InlineData("$var$ StartsWith $var$.Lenght")]
24+
[InlineData("$var$.Lenght Equals $var$.Lenght")]
25+
[InlineData("$var$ StartsWith \"123\"")]
26+
[InlineData("$var$ EndsWith $var$.Lenght")]
27+
[InlineData("$var$ EndsWith \"123\"")]
28+
[InlineData("$var$ Match $var$.Lenght")]
29+
[InlineData("$var$ Is Int")]
30+
[InlineData("$var$ Is DateTime")]
2831

2932
public void FindRuleExprParsingShouldBeSuccess(string ruleStr)
3033
{
31-
var rule = RuleParser.Expr.ParseOrThrow(ruleStr);
34+
var rule = FindRuleParser.Expr.ParseOrThrow(ruleStr);
3235
var _ruleStr = rule.ToString()?.ToLower();
3336
Assert.NotNull(rule);
3437
Assert.Equal(_ruleStr, ruleStr.ToLower());
3538
}
3639

3740
[Theory]
38-
[InlineData("In \"Is\", \"==\", \"!=\", \"is not\"", "In \"Is\",\"==\",\"!=\",\"is not\"")]
39-
[InlineData("In (\"Is\", \"==\", \"!=\", \"is not\")", "In \"Is\",\"==\",\"!=\",\"is not\"")]
41+
[InlineData("$var$ In \"Is\", \"==\", \"!=\", \"is not\"", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
42+
[InlineData("$var$ In (\"Is\", \"==\", \"!=\", \"is not\")", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
43+
[InlineData("Not ($var$ equals $var$.Lenght and $var$ StartsWith \"123\")", "Not $var$ equals $var$.Lenght and $var$ StartsWith \"123\"")]
44+
[InlineData("Not ($var$ equals $var$.Lenght)", "Not $var$ equals $var$.Lenght")]
4045
public void FindRuleExprParsingShouldBeEqualsCustomResult(string ruleStr, string customResult)
4146
{
42-
var rule = RuleParser.Expr.ParseOrThrow(ruleStr);
47+
var rule = FindRuleParser.Expr.ParseOrThrow(ruleStr);
4348
var _ruleStr = rule.ToString()?.ToLower();
4449
Assert.NotNull(rule);
4550
Assert.Equal(_ruleStr, customResult.ToLower());

src/SimpleStateMachine.StructuralSearch/Rules/FindRule/BinaryRule.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ public BinaryRule(BinaryRuleType type, IRule left, IRule right)
1717
Right = right;
1818
}
1919

20-
public bool Execute(string value)
20+
public bool Execute()
2121
{
22-
var left = Left.Execute(value);
23-
var right = Right.Execute(value);
22+
var left = Left.Execute();
23+
var right = Right.Execute();
2424

2525
return LogicalHelper.Calculate(Type, left, right);
2626
}

src/SimpleStateMachine.StructuralSearch/Rules/FindRule/ILogicalRule.cs

Lines changed: 0 additions & 6 deletions
This file was deleted.

src/SimpleStateMachine.StructuralSearch/Rules/FindRule/IRule.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22
{
33
public interface IRule
44
{
5-
bool Execute(string value);
5+
bool Execute();
66
}
77
}

src/SimpleStateMachine.StructuralSearch/Rules/FindRule/InRule.cs

Lines changed: 0 additions & 29 deletions
This file was deleted.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
using System.Collections.Generic;
2+
using System.Linq;
3+
4+
namespace SimpleStateMachine.StructuralSearch.Rules
5+
{
6+
public class InSubRule : IRule
7+
{
8+
public IRuleParameter Parameter { get; }
9+
10+
public IEnumerable<IRuleParameter> Arguments { get; }
11+
12+
public InSubRule(IRuleParameter parameter, IEnumerable<IRuleParameter> arguments)
13+
{
14+
Parameter = parameter;
15+
16+
Arguments = arguments;
17+
}
18+
19+
public bool Execute()
20+
{
21+
var value = Parameter.GetValue();
22+
return Arguments.Any(parameter => Equals(value, parameter.GetValue()));
23+
}
24+
25+
public override string ToString()
26+
{
27+
return $"{Parameter}{Constant.Space}{SubRuleType.In}{Constant.Space}{string.Join(Constant.Comma, Arguments.Select(x=>x.ToString()))}";
28+
}
29+
}
30+
}

src/SimpleStateMachine.StructuralSearch/Rules/FindRule/IsRule.cs renamed to src/SimpleStateMachine.StructuralSearch/Rules/FindRule/IsSubRule.cs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,23 @@
33

44
namespace SimpleStateMachine.StructuralSearch.Rules
55
{
6-
public class IsRule : IRule
6+
public class IsSubRule : IRule
77
{
8-
public SubRuleType Type { get; }
8+
public PlaceholderType Argument { get; }
99

10-
public PlaceholderType PlaceholderType { get; }
10+
public IRuleParameter Parameter { get; }
1111

12-
public IsRule(SubRuleType type, PlaceholderType placeholderType)
12+
public IsSubRule(IRuleParameter parameter, PlaceholderType argument)
1313
{
14-
Type = type;
15-
PlaceholderType = placeholderType;
14+
Parameter = parameter;
15+
Argument = argument;
1616
}
1717

18-
public bool Execute(string value)
18+
public bool Execute()
1919
{
20-
return PlaceholderType switch
20+
var value = Parameter.GetValue();
21+
22+
return Argument switch
2123
{
2224
PlaceholderType.Var => CommonParser.Identifier.TryParse(value, out _),
2325
PlaceholderType.Int => int.TryParse(value, out _),
@@ -30,7 +32,7 @@ public bool Execute(string value)
3032

3133
public override string ToString()
3234
{
33-
return $"{Type}{Constant.Space}{PlaceholderType}";
35+
return $"{Parameter}{Constant.Space}{SubRuleType.Is}{Constant.Space}{Argument}";
3436
}
3537
}
3638
}

src/SimpleStateMachine.StructuralSearch/Rules/FindRule/LogicalRule/BinaryLogicalRule.cs

Lines changed: 0 additions & 32 deletions
This file was deleted.

src/SimpleStateMachine.StructuralSearch/Rules/FindRule/LogicalRule/PlaceholderLogicalRule.cs

Lines changed: 0 additions & 26 deletions
This file was deleted.

src/SimpleStateMachine.StructuralSearch/Rules/FindRule/LogicalRule/UnaryLogicalRule.cs

Lines changed: 0 additions & 32 deletions
This file was deleted.

0 commit comments

Comments
 (0)