protected BaseMatcher(string patternText, RegexOptionsEx options) { Options = options; Pattern = BasePattern.CreatePattern(patternText); Pattern = TransformAST(Pattern); }
public static void DisplayASTTransform(string patternText, AlgorithmType algorithmType, RegexOptions options) { BasePattern beforePattern = BasePattern.CreatePattern(patternText); BasePattern afterPattern = doTransform(patternText, algorithmType, options); displayASTTransform(patternText, beforePattern, afterPattern); }
public static void DisplayASTTransform(string patternText, BaseASTTransform transform) { BasePattern beforePattern = BasePattern.CreatePattern(patternText); BasePattern afterPattern = doTransform(beforePattern, transform); displayASTTransform(patternText, beforePattern, afterPattern); }
public void CharEscapePattern_Empty() { BasePattern actual = BasePattern.CreatePattern(""); BasePattern expected = new GroupPattern(true, new BasePattern[] { }); Assert.AreEqual(expected, actual); }
public static void IsASTTransformCorrect(BasePattern expected, string patternText, AlgorithmType algorithmType, RegexOptions options) { BasePattern beforePattern = BasePattern.CreatePattern(patternText); BasePattern afterPattern = doTransform(patternText, algorithmType, options); displayASTTransform(patternText, beforePattern, afterPattern); Assert.AreEqual(expected, afterPattern); }
public static void IsASTTransformCorrect(BasePattern expected, string patternText, BaseASTTransform transform) { BasePattern beforePattern = BasePattern.CreatePattern(patternText); BasePattern afterPattern = doTransform(beforePattern, transform); displayASTTransform(patternText, beforePattern, afterPattern); Assert.AreEqual(expected, afterPattern); }
public void CharEscapePattern_Short() { BasePattern actual = BasePattern.CreatePattern("abc"); BasePattern expected = new GroupPattern(true, new BasePattern[] { new CharEscapePattern('a'), new CharEscapePattern('b'), new CharEscapePattern('c') }); Assert.AreEqual(expected, actual); }
public void NegativeRanges() { BasePattern actual = BasePattern.CreatePattern("[A-Z][^x][^a-z][0-9]"); BasePattern expected = new GroupPattern(true, new BasePattern[] { new CharGroupPattern(true, new[] { uppercase }), new CharGroupPattern(false, "x"), new CharGroupPattern(false, new[] { lowercase }), new CharGroupPattern(true, new[] { digits }) }); Assert.AreEqual(expected, actual); }
public void Doubled() { BasePattern actual = BasePattern.CreatePattern(@"((ab)+)+"); BasePattern expected = new GroupPattern(true, new QuantifierPattern( new GroupPattern(true, new QuantifierPattern( new GroupPattern(true, new CharEscapePattern('a'), new CharEscapePattern('b')), 1, null, true)), 1, null, true)); Assert.AreEqual(expected, actual, "With parentheses"); }
public void Quantifiers() { BasePattern actual = BasePattern.CreatePattern(@"\d*\s?\W+x*?\n??y+?"); BasePattern expected = new GroupPattern( true, new BasePattern[] { new QuantifierPattern(CharGroupPattern.DigitChar, 0, null, true), new QuantifierPattern(CharGroupPattern.WhitespaceChar, 0, 1, true), new QuantifierPattern(CharGroupPattern.WordChar.Negated, 1, null, true), new QuantifierPattern(new CharEscapePattern('x'), 0, null, false), new QuantifierPattern(new CharEscapePattern('\n'), 0, 1, false), new QuantifierPattern(new CharEscapePattern('y'), 1, null, false) }); Assert.AreEqual(expected, actual); }
public void GroupPattern() { string pattern = "t(h(in))g"; BasePattern actual = BasePattern.CreatePattern(pattern); BasePattern expected = new GroupPattern(true, new BasePattern[] { new CharEscapePattern('t'), new GroupPattern(true, new BasePattern[] { new CharEscapePattern('h'), new GroupPattern(true, new BasePattern[] { new CharEscapePattern('i'), new CharEscapePattern('n') }), }), new CharEscapePattern('g') }); Assert.AreEqual(expected, actual, pattern); }
public void CharSetsAndRanges() { BasePattern actual = BasePattern.CreatePattern("[A-Z]"); BasePattern expected = new GroupPattern(true, new BasePattern[] { new CharGroupPattern(true, new[] { uppercase }) }); Assert.AreEqual(expected, actual, "One Range"); actual = BasePattern.CreatePattern("[.,;:?!A-Za-z][xya-zm-wA-M][msabcdm ;xyz]"); expected = new GroupPattern(true, new BasePattern[] { new CharGroupPattern(true, ".,;:?!", new[] { uppercase, lowercase }), new CharGroupPattern(true, "xy", new[] { lowercase, new CharRangePattern('m', 'w'), new CharRangePattern('A', 'M') }), new CharGroupPattern(true, "msabcd ;xyz") }); Assert.AreEqual(expected, actual); }
public void Ranges() { BasePattern actual = BasePattern.CreatePattern("[A-Z]"); BasePattern expected = new GroupPattern(true, new BasePattern[] { new CharGroupPattern(true, new[] { uppercase }) }); Assert.AreEqual(expected, actual, "One Range"); actual = BasePattern.CreatePattern("[A-Z][a-z][0-9][a-zA-Z][A-Za-z0-9][a-zm-wA-M]"); expected = new GroupPattern(true, new BasePattern[] { new CharGroupPattern(true, new[] { uppercase }), new CharGroupPattern(true, new[] { lowercase }), new CharGroupPattern(true, new[] { digits }), new CharGroupPattern(true, new[] { lowercase, uppercase }), new CharGroupPattern(true, new[] { uppercase, lowercase, digits }), new CharGroupPattern(true, new[] { lowercase, new CharRangePattern('m', 'w'), new CharRangePattern('A', 'M') }) }); Assert.AreEqual(expected, actual, "Many Ranges"); }