Skip to content

Commit 8fc5e20

Browse files
Version 2.0
Version 2.0
2 parents f2d6017 + b133f01 commit 8fc5e20

File tree

135 files changed

+1907
-2106
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

135 files changed

+1907
-2106
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.IO;
4+
using System.Reflection;
5+
using Xunit.Sdk;
6+
7+
namespace SimpleStateMachine.StructuralSearch.Tests.Attributes;
8+
9+
public class FilesDataAttribute : DataAttribute
10+
{
11+
private readonly string _folderPath;
12+
13+
public FilesDataAttribute(string folderPath)
14+
{
15+
_folderPath = folderPath;
16+
}
17+
18+
public override IEnumerable<object[]> GetData(MethodInfo testMethod)
19+
{
20+
ArgumentNullException.ThrowIfNull(testMethod);
21+
22+
if (!Directory.Exists(_folderPath))
23+
{
24+
throw new DirectoryNotFoundException($"Could not find folder: {_folderPath}");
25+
}
26+
27+
foreach (var file in Directory.GetFiles(_folderPath))
28+
{
29+
yield return [file];
30+
}
31+
}
32+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
using System;
2+
using System.Globalization;
3+
using System.Reflection;
4+
using Xunit;
5+
6+
namespace SimpleStateMachine.StructuralSearch.Tests.Attributes;
7+
8+
[CLSCompliant(false)]
9+
public class StringMemberDataAttribute : MemberDataAttributeBase
10+
{
11+
private readonly string _memberName;
12+
13+
public StringMemberDataAttribute(string memberName, params object[] parameters)
14+
: base(memberName, parameters)
15+
{
16+
_memberName = memberName;
17+
}
18+
19+
protected override object[] ConvertDataItem(MethodInfo testMethod, object item)
20+
{
21+
if (item == null)
22+
return null;
23+
24+
var str = item as string;
25+
if (str == null)
26+
throw new ArgumentException
27+
(
28+
string.Format(
29+
CultureInfo.CurrentCulture,
30+
"Property {0} on {1} yielded an item that is not string",
31+
MemberName,
32+
MemberType ?? testMethod.DeclaringType
33+
)
34+
);
35+
36+
return [str];
37+
}
38+
}

src/SimpleStateMachine.StructuralSearch.Tests/ConfigurationFile/FullConfig.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
ReplaceTemplate: |-
2424
$var$ = $value1$ ?? $value2$;
2525
ReplaceRules:
26-
- $sign$ In ("!=", "is not") then $value2$ => $value1$, $value1$ => $value2$
26+
- if $sign$ In ("!=", "is not") then $value2$ => $value1$, $value1$ => $value2$
2727
2828
# TernaryOperator
2929

src/SimpleStateMachine.StructuralSearch.Tests/ConfigurationFile/ShortConfig.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
ReplaceTemplate: |-
2323
$var$ = $value1$ ?? $value2$;
2424
ReplaceRules:
25-
- $sign$ In ("!=", "is not") then $value2$ => $value1$, $value1$ => $value2$
25+
- if $sign$ In ("!=", "is not") then $value2$ => $value1$, $value1$ => $value2$
2626
2727
# TernaryOperator
2828

src/SimpleStateMachine.StructuralSearch.Tests/ExamplesInput/Common.cs

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

src/SimpleStateMachine.StructuralSearch.Tests/ExamplesInput/Common2.cs

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

src/SimpleStateMachine.StructuralSearch.Tests/ExamplesInput/Methods.cs renamed to src/SimpleStateMachine.StructuralSearch.Tests/ExamplesInput/Methods.txt

File renamed without changes.

src/SimpleStateMachine.StructuralSearch.Tests/ExamplesInput/NullUnionOperator.cs renamed to src/SimpleStateMachine.StructuralSearch.Tests/ExamplesInput/NullUnionOperator.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace SimpleStateMachine.StructuralSearch.Tests.ExamplesInput;
1+
namespace SimpleStateMachine.StructuralSearch.Tests.ExamplesInput;
22

33
public class NullUnionOperator
44
{
@@ -7,6 +7,7 @@ public static void Test1()
77
int? result;
88
int? temp1 = 5;
99
int? temp2 = 5;
10+
// TODO: try result = temp1 ?? temp2;
1011

1112
if (temp1 is null)
1213
result = temp2;

src/SimpleStateMachine.StructuralSearch.Tests/ExamplesInput/TernaryOperator.cs renamed to src/SimpleStateMachine.StructuralSearch.Tests/ExamplesInput/TernaryOperator.txt

File renamed without changes.
Lines changed: 10 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,77 +1,25 @@
11
using System.IO;
2-
using System.Linq;
3-
using Pidgin;
2+
using SimpleStateMachine.StructuralSearch.Extensions;
43
using SimpleStateMachine.StructuralSearch.StructuralSearch;
4+
using SimpleStateMachine.StructuralSearch.Tests.Attributes;
55
using Xunit;
66

77
namespace SimpleStateMachine.StructuralSearch.Tests;
88

9-
public static class FindRuleParserTests
9+
public class FindRuleParserTests
1010
{
1111
[Theory]
12-
[InlineData("$var$ equals $var$")]
13-
[InlineData("$var$ equals \"\\$\"")]
14-
[InlineData("Not $var$ equals $var$.Lenght")]
15-
[InlineData("Not $var$ equals $var$.offset.Start")]
16-
[InlineData("$var$ equals $var$.Lenght and Not $var$ StartsWith \"123\"")]
17-
[InlineData("Not $var$ equals $var$.Lenght and $var$ StartsWith \"123\"")]
18-
[InlineData("$var$ equals $var$.Lenght and Not $var$ StartsWith \"\\\"Test\"")]
19-
[InlineData("$var$ Contains $var$.Lenght")]
20-
[InlineData("not $var$ Contains \"123\"")]
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$ Is Int")]
29-
[InlineData("$var$ Is DateTime")]
30-
[InlineData("$var$ equals $var1$ or $var2$ equals $var1$")]
31-
[InlineData("$var$ match \"[a-b]+\"")]
32-
public static void FindRuleExprParsingShouldBeSuccess(string ruleStr)
12+
[InlineData("$sign$ In (\"is\", \"==\", \"!=\", \"is not\")")]
13+
public static void FindRuleParsingShouldBeSuccess(string ruleStr)
3314
{
34-
var rule = FindRuleParser.Expr.ParseOrThrow(ruleStr);
35-
var _ruleStr = rule.ToString()?.ToLower();
36-
Assert.NotNull(rule);
37-
Assert.Equal(_ruleStr, ruleStr.ToLower());
15+
LogicalExpressionParser.LogicalExpression.ParseToEnd(ruleStr);
3816
}
39-
17+
4018
[Theory]
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("$var$ In \"Is\",\"==\",\"!=\",\"is not\"", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
44-
[InlineData("$var$ In (\"Is\",\"==\",\"!=\",\"is not\")", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
45-
[InlineData("$var$ In(\"Is\",\"==\",\"!=\",\"is not\")", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
46-
[InlineData("$var$ In ( \"Is\",\"==\",\"!=\",\"is not\" ) ", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
47-
[InlineData("$var$ In ( \"Is\",\"==\",\"!=\",\"is not\" )", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
48-
[InlineData("$var$ In ( \"Is\",\"==\",\"!=\",\"is not\") ", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
49-
[InlineData("$var$ In (\"Is\",\"==\",\"!=\",\"is not\" ) ", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
50-
[InlineData("$var$ In (\"Is\",\"==\",\"!=\",\"is not\" )", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
51-
[InlineData("$var$ In (\"Is\",\"==\",\"!=\",\"is not\") ", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
52-
[InlineData("$var$ In( \"Is\",\"==\",\"!=\",\"is not\" ) ", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
53-
[InlineData("$var$ In( \"Is\",\"==\",\"!=\",\"is not\" )", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
54-
[InlineData("$var$ In( \"Is\",\"==\",\"!=\",\"is not\") ", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
55-
[InlineData("Not ($var$ equals $var$.Lenght and $var$ StartsWith \"123\")", "Not $var$ equals $var$.Lenght and $var$ StartsWith \"123\"")]
56-
[InlineData("Not ($var$ equals $var$.Lenght)", "Not $var$ equals $var$.Lenght")]
57-
public static void FindRuleExprParsingShouldBeEqualsCustomResult(string ruleStr, string customResult)
58-
{
59-
var rule = FindRuleParser.Expr.ParseOrThrow(ruleStr);
60-
var ruleAsStr = rule.ToString()?.ToLower();
61-
Assert.NotNull(rule);
62-
Assert.Equal(ruleAsStr, customResult.ToLower());
63-
}
64-
65-
[Theory]
66-
[InlineData("FindRule/NullUnionOperator.txt", "$sign$ In \"is\",\"==\",\"!=\",\"is not\"")]
67-
[InlineData("FindRule/AssignmentNullUnionOperator.txt", "$sign$ In \"is\",\"==\",\"!=\",\"is not\"")]
68-
public static void FindRuleParsingFromFileShouldBeSuccess(string filePath, params string[] customResult)
19+
[FilesData("FindRule")]
20+
public static void FindRuleFileParsingShouldBeSuccess(string filePath)
6921
{
7022
var ruleStr = File.ReadAllText(filePath);
71-
var rules = ruleStr.Split(Constant.LineFeed)
72-
.Select(StructuralSearch.StructuralSearch.ParseFindRule);
73-
var rulesAsStr = rules.Select(x => x.ToString()).ToArray();
74-
75-
Assert.True(customResult.SequenceEqual(rulesAsStr));
23+
LogicalExpressionParser.LogicalExpression.ParseToEnd(ruleStr);
7624
}
7725
}

0 commit comments

Comments
 (0)