Skip to content

Commit 0e47475

Browse files
committed
Input abstraction
1 parent c5bf3e7 commit 0e47475

20 files changed

+205
-36
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
using System;
2+
3+
namespace SimpleStateMachine.StructuralSearch.Tests.Examples
4+
{
5+
public class TernaryOperator
6+
{
7+
public int Test1()
8+
{
9+
var temp = 150;
10+
11+
if(temp == 125)
12+
return 12;
13+
else
14+
return 15;
15+
}
16+
17+
public int Test2()
18+
{
19+
var temp = 150;
20+
21+
if(temp == 125)
22+
return 12;
23+
else
24+
return 15;
25+
}
26+
27+
public int Test3()
28+
{
29+
var temp2 = 150;
30+
31+
if(temp2 == 125)
32+
return 12;
33+
else
34+
return 15;
35+
}
36+
37+
public int Test4()
38+
{
39+
var temp3 = 150;
40+
41+
if(temp3 == 125)
42+
return 12;
43+
else if (temp3 == 135)
44+
return 15;
45+
else
46+
return 0;
47+
}
48+
49+
public void Test5()
50+
{
51+
52+
}
53+
}
54+
}

src/SimpleStateMachine.StructuralSearch.Tests/FindTemplateTests.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,10 @@ public void SourceParsingBeFindTemplateShouldBeSuccess(string templatePath, stri
2828
{
2929
var findTemplate = File.ReadAllText(templatePath);
3030
var source = File.ReadAllText(sourcePath);
31+
var input = Input.String(source);
3132
var findParser = StructuralSearch.ParseFindTemplate(findTemplate);
32-
IParsingContext parsingContext = new ParsingContext();
33-
var result = findParser.Parse(ref parsingContext, source);
33+
IParsingContext parsingContext = new ParsingContext(input);
34+
var result = findParser.Parse(ref parsingContext, input);
3435

3536
Assert.NotNull(findParser);
3637
Assert.NotNull(result.Value);

src/SimpleStateMachine.StructuralSearch.Tests/Mock/EmptyParsingContext.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
{
33
public class EmptyParsingContext : IParsingContext
44
{
5-
public FileProperty File { get; } = new FileProperty();
5+
public IInput Input { get; }
66

77
public bool TryGetPlaceholder(string name, out Placeholder value)
88
{

src/SimpleStateMachine.StructuralSearch.Tests/PlaceholderParserTests.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,10 @@ public void FindTemplateShouldBeNotEmpty()
1818
[InlineData("($test$)", "(value (test) )", "value (test) ")]
1919
public void TemplateParsingShouldBeSuccess(string template, string source, string result)
2020
{
21-
IParsingContext parsingContext = new ParsingContext();
21+
var input = Input.String(source);
22+
IParsingContext parsingContext = new ParsingContext(input);
2223
var templateParser = StructuralSearch.ParseFindTemplate(template);
23-
var res = templateParser.Parse(ref parsingContext, source);
24+
var res = templateParser.Parse(ref parsingContext, input);
2425
var placeholder = parsingContext.GetPlaceholder("test");
2526

2627
Assert.Equal(placeholder.Value, result);
@@ -30,9 +31,10 @@ public void TemplateParsingShouldBeSuccess(string template, string source, strin
3031
[InlineData("$var$;$var2$;", "test;;;test;;;", "value ")]
3132
public void TemplateParsingShouldBeSuccess2(string template, string source, string result)
3233
{
33-
IParsingContext parsingContext = new ParsingContext();
34+
var input = Input.String(source);
35+
IParsingContext parsingContext = new ParsingContext(input);
3436
var templateParser = StructuralSearch.ParseFindTemplate(template);
35-
templateParser.Parse(ref parsingContext, source);
37+
templateParser.Parse(ref parsingContext, input);
3638

3739

3840
// var templateStr = File.ReadAllText(templatePath);

src/SimpleStateMachine.StructuralSearch.Tests/ReplaceTemplateTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public void ReplaceBuildShouldBeSuccess(string templatePath, string resultPath,
3838
var replaceResult = File.ReadAllText(resultPath);
3939
var replaceBuilder = StructuralSearch.ParseReplaceTemplate(replaceTemplate);
4040

41-
var parsingContext = new ParsingContext();
41+
var parsingContext = new ParsingContext(Input.Empty);
4242
for (int i = 0; i < keys.Length; i++)
4343
{
4444
parsingContext.AddPlaceholder(Placeholder.CreateEmpty(parsingContext, keys[i], values[i]));

src/SimpleStateMachine.StructuralSearch.Tests/SimpleStateMachine.StructuralSearch.Tests.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@
2525
</ItemGroup>
2626

2727
<ItemGroup Condition="'$(Configuration)' == 'Debug'">
28+
<Content Include="Examples\*.cs">
29+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
30+
</Content>
2831
<Content Include="FindTemplate\*.txt">
2932
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
3033
</Content>
Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,25 @@
1-
using SimpleStateMachine.StructuralSearch.Tests.Mock;
1+
using System.IO;
2+
using SimpleStateMachine.StructuralSearch.Tests.Mock;
23
using Xunit;
34

45
namespace SimpleStateMachine.StructuralSearch.Tests
56
{
67
public class StructuralSearchParserTests
78
{
89
[Theory]
9-
[InlineData("AssignmentNullUnionOperator")]
10-
[InlineData("NullUnionOperator")]
11-
[InlineData("TernaryOperator")]
12-
public static void StructuralSearchShouldBeSuccess(string exampleName)
10+
// [InlineData("AssignmentNullUnionOperator")]
11+
// [InlineData("NullUnionOperator")]
12+
[InlineData("TernaryOperator", "Examples/TernaryOperator.cs")]
13+
public static void StructuralSearchShouldBeSuccess(string exampleName, string exampleFilePath)
1314
{
1415
var config = ConfigurationMock.GetConfigurationFromFiles(exampleName);
1516
var parser = new StructuralSearchParser(config);
16-
17+
18+
var fileInfo = new FileInfo(exampleFilePath);
19+
var input = Input.File(fileInfo);
20+
IParsingContext context = new ParsingContext(input);
21+
22+
parser.Parse(ref context);
1723
}
1824
}
1925
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
using Pidgin;
2+
3+
namespace SimpleStateMachine.StructuralSearch
4+
{
5+
public class EmptyInput : IInput
6+
{
7+
public Result<char, T> Parse<T>(Parser<char, T> parser)
8+
{
9+
throw new System.NotImplementedException();
10+
}
11+
}
12+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
using System.IO;
2+
using Pidgin;
3+
4+
namespace SimpleStateMachine.StructuralSearch
5+
{
6+
public class FileInput : IInput
7+
{
8+
public FileInput(FileInfo fileInfo)
9+
{
10+
FileInfo = fileInfo;
11+
}
12+
13+
public readonly FileInfo FileInfo;
14+
15+
public Result<char, T> Parse<T>(Parser<char, T> parser)
16+
{
17+
return parser.Parse(FileInfo.OpenText());
18+
}
19+
}
20+
}

src/SimpleStateMachine.StructuralSearch/FindParser.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
using System.Collections.Generic;
2+
using System.IO;
23
using Pidgin;
34
using SimpleStateMachine.StructuralSearch.Extensions;
5+
using YamlDotNet.Core.Events;
46

57
namespace SimpleStateMachine.StructuralSearch
68
{
@@ -12,13 +14,13 @@ public FindParser(SeriesParser parser)
1214
Parser = parser;
1315
}
1416

15-
public SourceMatch Parse(ref IParsingContext context, string input)
17+
public SourceMatch Parse(ref IParsingContext context, IInput input)
1618
{
1719
Parser.SetContext(ref context);
18-
var result = Parser.Select(x => string.Join(string.Empty, x))
19-
.AsMatch()
20-
.Parse(input);
2120

21+
var result = input.Parse(Parser.Select(x => string.Join(string.Empty, x))
22+
.AsMatch());
23+
2224
return result.Success ? result.Value : SourceMatch.Empty;
2325
}
2426
}

0 commit comments

Comments
 (0)