public void CombinedGroupsMatchTest() { // Arrange var text = "asd13579thIs"; var regex = new Regex(@"(?:[a-z]+?)(?<odd>13579)(?i:THIS)(\d+)?"); var expectedMatch = regex.Match(text); var regexGenerator = new RegexGenerator(RegexLanguage.DotNet) .AddGroup("[a-z]+?", false) .AddGroup("13579", true, "odd") .AddGroup("THIS", false, options: "i") // capturing group option does not matter. .AddGroup(@"\d+", true, min: 0, max: 1); // Act var generatedRegex = regexGenerator.Create(); var actualMatch = generatedRegex.Match(text); // Assert Assert.True(expectedMatch.Success); Assert.True(actualMatch.Success); Assert.Equal(expectedMatch.Value, actualMatch.Value); Assert.Equal(expectedMatch.Groups.Count, actualMatch.Groups.Count); for (var i = 0; i < expectedMatch.Groups.Count; i++) { Assert.Equal(expectedMatch.Groups[i].Name, actualMatch.Groups[i].Name); Assert.Equal(expectedMatch.Groups[i].Value, actualMatch.Groups[i].Value); } }
public void TestMethod1() { var rg = new RegexGenerator(); rg.Add("a"); rg.Add("b"); rg.Add("c"); Assert.AreEqual("[abc]", rg.Generate(RegexOperator.DEFAULT)); }
public void TestMethod3() { var rg = new RegexGenerator(); rg.Add("ab"); rg.Add("ac"); rg.Add("z"); Assert.AreEqual("(z|a[bc])", rg.Generate(RegexOperator.DEFAULT)); }
public void AddNonCapturingGroupTest() { // Arrange var regexGenerator = new RegexGenerator(); // Act regexGenerator.AddGroup(@"a", capturing: false); // Assert Assert.Equal(@"(?:a)", regexGenerator.ToString()); }
public void AddNamedCapturingGroupTest() { // Arrange var regexGenerator = new RegexGenerator(); // Act regexGenerator.AddGroup(@"a", name: "a"); // Assert Assert.Equal(@"(?<a>a)", regexGenerator.ToString()); }
public void AddConditionalTest() { // Arrange var regexGenerator = new RegexGenerator(); // Act regexGenerator.AddConditional(@"a", "b", "c"); // Assert Assert.Equal(@"(?(?=a)b|c)", regexGenerator.ToString()); }
public void AddNodeQuantifierTest(RegexQuantifierOption quantifierOption) { // Arrange var regexGenerator = new RegexGenerator(); // Act regexGenerator.Add(@"a", min: 1, max: 10, quantifierOption: quantifierOption); // Assert Assert.Equal($@"a{{1,10}}{regexGenerator.RegexLanguageStrategy.Stringifier.ToQuantifierOptionString(quantifierOption)}", regexGenerator.ToString()); }
public void AddUnicodeCategoryByStringTest() { // Arrange var regexGenerator = new RegexGenerator(); // Act regexGenerator.AddUnicodeCategory("L"); // Assert Assert.Equal(@"\p{L}", regexGenerator.ToString()); }
public void AddNegativeLookbehindAssertionTest() { // Arrange var regexGenerator = new RegexGenerator(); // Act regexGenerator.AddNegativeLookbehindAssertion(@"a"); // Assert Assert.Equal(@"(?<!a)", regexGenerator.ToString()); }
public void AddNodeTest() { // Arrange var regexGenerator = new RegexGenerator(); // Act regexGenerator.Add(@"a"); // Assert Assert.Equal(@"a", regexGenerator.ToString()); }
public void AddAtomicGroupTest() { // Arrange var regexGenerator = new RegexGenerator(); // Act regexGenerator.AddAtomicGroup(@"a"); // Assert Assert.Equal(@"(?>a)", regexGenerator.ToString()); }
public void AddPositiveLookaheadAssertionTest() { // Arrange var regexGenerator = new RegexGenerator(); // Act regexGenerator.AddPositiveLookaheadAssertion(@"a"); // Assert Assert.Equal(@"(?=a)", regexGenerator.ToString()); }
public void SimpleAddNestedNodeTest() { // Arrange var regexGenerator = new RegexGenerator(); var node = new RegexNode(@"a"); // Act regexGenerator.AddGroup(node); // Assert Assert.Equal(@"(a)", regexGenerator.ToString()); }
public void SimplePatternGenerationTest() { // Arrange var expectedPattern = @"\d"; var regexGenerator = new RegexGenerator(RegexLanguage.DotNet) .Add(expectedPattern); // Act var actualPattern = regexGenerator.ToString(); // Assert Assert.Equal(expectedPattern, actualPattern); }
public void SimpleCapturingGroupWithoutNamePatternGenerationTest() { // Arrange var expectedPattern = @"(abcde)"; var regexGenerator = new RegexGenerator(RegexLanguage.DotNet) .AddGroup(@"abcde", true); // Act var actualPattern = regexGenerator.ToString(); // Assert Assert.Equal(expectedPattern, actualPattern); }
public void SimpleUnicodeCategoryByStringPatternGenerationTest() { // Arrange var expectedPattern = @"\p{Lo}+"; var regexGenerator = new RegexGenerator(RegexLanguage.DotNet) .AddUnicodeCategory("Lo", min: 1); // Act var actualPattern = regexGenerator.ToString(); // Assert Assert.Equal(expectedPattern, actualPattern); }
public void SimpleNegativeLookbehindPatternGenerationTest() { // Arrange var expectedPattern = @"(?<!abc)"; var regexGenerator = new RegexGenerator(RegexLanguage.DotNet) .AddNegativeLookbehindAssertion("abc"); // Act var actualPattern = regexGenerator.ToString(); // Assert Assert.Equal(expectedPattern, actualPattern); }
public void SimpleNonCapturingGroupPatternGenerationTest() { // Arrange var pattern = @"(?:abcde)"; var expectedPattern = $"/{pattern}/"; var regexGenerator = new RegexGenerator(RegexLanguage.ECMAScript) .AddGroup("abcde", false); // Act var actualPattern = regexGenerator.ToString(); // Assert Assert.Equal(expectedPattern, actualPattern); }
public void SimpleConditionalPatternGenerationTest() { // Arrange var expectedPattern = @"(?(?=yes)yess|no)"; var regexGenerator = new RegexGenerator(RegexLanguage.DotNet) .AddConditional("yes", "yess", "no"); // Act var actualPattern = regexGenerator.ToString(); // Assert Assert.Equal(expectedPattern, actualPattern); }
static void Main(string[] args) { var test = new List <String> { "a2c", "123" }; var logic = new RegexGenerator(); var regex = logic.GetRegex(test); Console.WriteLine(regex); Console.ReadLine(); }
public void SimpleCapturingGroupWithAngleBracketedNamePatternGenerationTest() { // Arrange var expectedPattern = @"(?<word>abcde)"; var regexGenerator = new RegexGenerator(RegexLanguage.DotNet) .AddGroup(@"abcde", name: "word"); // Important! //(regexGenerator.RegexLanguageStrategy.Stringifier as DotNetRegexStringifier).NamedCaptureGroupBracketOption = NamedCaptureGroupBracketOption.AngleBracket; // Act var actualPattern = regexGenerator.ToString(); // Assert Assert.Equal(expectedPattern, actualPattern); }
public void SimpleAtomicGroupPatternGenerationTest() { // Arrange var expectedPattern = @"(?>(\w)\1+).\b"; var regexGenerator = new RegexGenerator(RegexLanguage.DotNet) .AddAtomicGroup(@"(\w)\1+") .Add(@".\b"); // Act var actualPattern = regexGenerator.ToString(); // Assert Assert.Equal(expectedPattern, actualPattern); }
public void SimpleNegativeLookaheadPatternGenerationTest() { // Arrange var pattern = @"(?!abc)"; var expectedPattern = $"/{pattern}/"; var regexGenerator = new RegexGenerator(RegexLanguage.ECMAScript) .AddNegativeLookaheadAssertion("abc"); // Act var actualPattern = regexGenerator.ToString(); // Assert Assert.Equal(expectedPattern, actualPattern); }
public void CompositeAddNestedNodeTest() { // Arrange var regexGenerator = new RegexGenerator(); var node1 = new RegexNode(@"[abc]"); var nested1 = new RegexGroupNode(node1, capturing: false, min: 1, max: null, quantifierOption: RegexQuantifierOption.Lazy); var node2 = new RegexConditionalNode(@"a", "b", "c"); var nested2 = new RegexGroupNode(node2, capturing: true, name: "a"); // Act regexGenerator.AddNegativeLookbehindAssertion(nested1) .AddGroup(nested2); // Assert Assert.Equal(@"(?<!(?:[abc])+?)(?<a>(?(?=a)b|c))", regexGenerator.ToString()); }
public void CombinedGroupsPatternGenerationTest() { // Arrange var expectedPattern = @"(?:[a-z]+?)(?<odd>13579)(?i:THIS)(\d+)?"; var regexGenerator = new RegexGenerator(RegexLanguage.DotNet) .AddGroup("[a-z]+?", false) .AddGroup("13579", true, "odd") .AddGroup("THIS", false, options: "i") // capturing group option does not matter. .AddGroup(@"\d+", true, min: 0, max: 1); // Act var actualPattern = regexGenerator.ToString(); // Assert Assert.Equal(expectedPattern, actualPattern); }
public void UnicodeCategoryByFlagPatternGenerationsTest() { for (RegexUnicodeCategoryFlag flag = RegexUnicodeCategoryFlag.Lo; flag < RegexUnicodeCategoryFlag.Z; flag = (RegexUnicodeCategoryFlag)((int)flag << 1)) { // Arrange var expectedPattern = $@"\p{{{flag}}}+"; var regexGenerator = new RegexGenerator(RegexLanguage.DotNet) .AddUnicodeCategory(flag, min: 1); // Act var actualPattern = regexGenerator.ToString(); // Assert Assert.Equal(expectedPattern, actualPattern); } }
public void SimpleConditionalPatternGenerationTest() { // Arrange var expectedPattern = @"(?(?=yes)yess|no)"; Assert.Throws <ConditionalNotSupportedException>(() => { var regexGenerator = new RegexGenerator(RegexLanguage.ECMAScript) .AddConditional("yes", "yess", "no"); // Act var actualPattern = regexGenerator.ToString(); // Assert Assert.Equal(expectedPattern, actualPattern); }); }
public void SimpleNegativeLookbehindPatternGenerationTest() { // Arrange var pattern = @"(?<!abc)"; var expectedPattern = $"/{pattern}/"; Assert.Throws <NegativeLookbehindAssertionNotSupportedException>(() => { var regexGenerator = new RegexGenerator(RegexLanguage.ECMAScript) .AddNegativeLookbehindAssertion("abc"); // Act var actualPattern = regexGenerator.ToString(); // Assert Assert.Equal(expectedPattern, actualPattern); }); }
public void SimpleUnicodeCategoryByStringPatternGenerationTest() { // Arrange var pattern = @"\p{Lo}+"; var expectedPattern = $"/{pattern}/"; Assert.Throws <UnicodeCategoryNotSupportedException>(() => { var regexGenerator = new RegexGenerator(RegexLanguage.ECMAScript) .AddUnicodeCategory("Lo", min: 1); // Act var actualPattern = regexGenerator.ToString(); // Assert Assert.Equal(expectedPattern, actualPattern); }); }
public void SimpleCapturingGroupWithoutNameMatchTest() { // Arrange var text = "abcde"; var regex = new Regex(@"(abcde)"); var expectedMatch = regex.Match(text); var regexGenerator = new RegexGenerator(RegexLanguage.DotNet) .AddGroup(@"abcde", true); // Act var generatedRegex = regexGenerator.Create(); var actualMatch = generatedRegex.Match(text); // Assert Assert.True(expectedMatch.Success); Assert.True(actualMatch.Success); Assert.Equal(expectedMatch.Value, actualMatch.Value); }