feat: implement greedy repetition, ref: A24-13
This commit is contained in:
@@ -12,6 +12,9 @@ public class TextParserTests
|
||||
private const string testInput3 = @"2 4 6 1
|
||||
3 5 7 2
|
||||
4 6 8 3";
|
||||
private const string testInput4 = @"2 ab ba fd er sd
|
||||
8 cd dc
|
||||
7 uh 6 yp rt";
|
||||
|
||||
[Fact]
|
||||
public void LineParser_TestSimpleRepetition()
|
||||
@@ -157,4 +160,43 @@ public class TextParserTests
|
||||
Assert.Equal(2, columns[3][1]);
|
||||
Assert.Equal(3, columns[3][2]);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TextParser_TestGreedyRepetitionAsRows()
|
||||
{
|
||||
var schemaBuilder = new InputSchemaBuilder();
|
||||
var schema = schemaBuilder
|
||||
.Repeat()
|
||||
.Expect(InputType.Integer)
|
||||
.Repeat()
|
||||
.Expect(InputType.String)
|
||||
.EndRepetition()
|
||||
.EndRepetition()
|
||||
.Build();
|
||||
|
||||
var parser = new TextParser(schema);
|
||||
var rows = parser
|
||||
.SetInputText(testInput4)
|
||||
.Parse()
|
||||
.AsRawData();
|
||||
|
||||
Assert.Equal(3, rows.Count);
|
||||
Assert.Equal(6, rows[0].Count);
|
||||
Assert.Equal(3, rows[1].Count);
|
||||
Assert.Equal(5, rows[2].Count);
|
||||
Assert.Equal(InputType.Integer, rows[0][0].GetInputType());
|
||||
Assert.Equal(InputType.String, rows[0][1].GetInputType());
|
||||
Assert.Equal(InputType.String, rows[0][2].GetInputType());
|
||||
Assert.Equal(InputType.String, rows[0][3].GetInputType());
|
||||
Assert.Equal(InputType.String, rows[0][4].GetInputType());
|
||||
Assert.Equal(InputType.String, rows[0][5].GetInputType());
|
||||
Assert.Equal(InputType.Integer, rows[1][0].GetInputType());
|
||||
Assert.Equal(InputType.String, rows[1][1].GetInputType());
|
||||
Assert.Equal(InputType.String, rows[1][2].GetInputType());
|
||||
Assert.Equal(InputType.Integer, rows[2][0].GetInputType());
|
||||
Assert.Equal(InputType.String, rows[2][1].GetInputType());
|
||||
Assert.Equal(InputType.Integer, rows[2][2].GetInputType());
|
||||
Assert.Equal(InputType.String, rows[2][3].GetInputType());
|
||||
Assert.Equal(InputType.String, rows[2][4].GetInputType());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user