protected override object VisitAnyCharacterBlock(AnyCharacterBlock block) { int length = _input.Length; if (_position < length) { return new[] { _position + 1 }; } return _errorResult; }
public void GetPositionsFromAnyCharacterBlockTest() { string input = "\0"; var visitor1 = new CheckerRegexVisitor(0, input, null); var block = new AnyCharacterBlock(); var positions1 = visitor1.GetPositions(block); positions1.Should().BeEquivalentTo(new[] { 1 }); input = "a"; var visitor2 = new CheckerRegexVisitor(0, input, null); var positions2 = visitor2.GetPositions(block); positions2.Should().BeEquivalentTo(new[] { 1 }); }
public void ParseTest10() { var parser = new RegexParser(); string pattern = ".*a.*"; // Expected regular expression var anyCharacterBlock = new AnyCharacterBlock(); var zeroOrOneBlock = new ZeroOrMoreBlock(anyCharacterBlock); var textBlock = new TextBlock("a"); var groupBlock = new AndGroupBlock(new RegexBlock[] { zeroOrOneBlock, textBlock, zeroOrOneBlock }); var expected = new RegularExpression(groupBlock); var actual = parser.Parse(pattern); actual.ShouldBeEquivalentTo(expected, options => options.IncludingAllRuntimeProperties()); }
public void ParseTest10() { var parser = new RegexParser(); string pattern = ".*a.*"; // Expected regular expression var anyCharacterBlock = new AnyCharacterBlock(); var zeroOrOneBlock = new ZeroOrMoreBlock(anyCharacterBlock); var textBlock = new TextBlock("a"); var groupBlock = new AndGroupBlock(new RegexBlock[] { zeroOrOneBlock, textBlock, zeroOrOneBlock }); var expected = new RegularExpression(groupBlock); var actual = parser.Parse(pattern); Assert.IsTrue(expected.Equals(actual), "Pattern was parsed incorrectly"); }
public void GetLinesFromAnyCharacterBlockTest() { var input = "\0"; var visitor1 = new BuilderRegexVisitor(0, input, null, null); var block = new AnyCharacterBlock(); var expectedLines = new List<string>(); for (char c = 'a'; c < 'z'; c++) expectedLines.Add(c.ToString()); CheckVisitorResult(visitor1, block, expectedLines); input = "a"; var visitor2 = new BuilderRegexVisitor(0, input, null, null); CheckVisitorResult(visitor2, block, new[] { "a" }); }
public void ParseTest11() { var parser = new RegexParser(); string pattern = @".+(.)(.)(.)(.)\4\3\2\1.*"; // Expected regular expression var anyCharacterBlock = new AnyCharacterBlock(); var oneOrMoreBlock = new OneOrMoreBlock(anyCharacterBlock); var zeroOrOneBlock = new ZeroOrMoreBlock(anyCharacterBlock); var andGroupBlock = new AndGroupBlock(new [] { anyCharacterBlock }); var b4 = new BackreferenceBlock(4); var b3 = new BackreferenceBlock(3); var b2 = new BackreferenceBlock(2); var b1 = new BackreferenceBlock(1); var groupBlock = new AndGroupBlock(new RegexBlock[] { oneOrMoreBlock, andGroupBlock, andGroupBlock, andGroupBlock, andGroupBlock, b4, b3, b2, b1, zeroOrOneBlock }); var expected = new RegularExpression(groupBlock); var actual = parser.Parse(pattern); actual.ShouldBeEquivalentTo(expected, options => options.IncludingAllRuntimeProperties()); }
public void ParseTest11() { var parser = new RegexParser(); string pattern = @".+(.)(.)(.)(.)\4\3\2\1.*"; // Expected regular expression var anyCharacterBlock = new AnyCharacterBlock(); var oneOrMoreBlock = new OneOrMoreBlock(anyCharacterBlock); var zeroOrOneBlock = new ZeroOrMoreBlock(anyCharacterBlock); var andGroupBlock = new AndGroupBlock(new [] { anyCharacterBlock }); var b4 = new BackreferenceBlock(4); var b3 = new BackreferenceBlock(3); var b2 = new BackreferenceBlock(2); var b1 = new BackreferenceBlock(1); var groupBlock = new AndGroupBlock(new RegexBlock[] { oneOrMoreBlock, andGroupBlock, andGroupBlock, andGroupBlock, andGroupBlock, b4, b3, b2, b1, zeroOrOneBlock }); var expected = new RegularExpression(groupBlock); var actual = parser.Parse(pattern); Assert.IsTrue(expected.Equals(actual), "Pattern was parsed incorrectly"); }
protected virtual object VisitAnyCharacterBlock(AnyCharacterBlock block) { return block; }