public void AddNegativeLookbehindAssertionTest()
        {
            // Arrange
            var regexGenerator = new RegexGenerator();

            // Act
            regexGenerator.AddNegativeLookbehindAssertion(@"a");

            // Assert
            Assert.Equal(@"(?<!a)", regexGenerator.ToString());
        }
        public void AddUnicodeCategoryByStringTest()
        {
            // Arrange
            var regexGenerator = new RegexGenerator();

            // Act
            regexGenerator.AddUnicodeCategory("L");

            // Assert
            Assert.Equal(@"\p{L}", regexGenerator.ToString());
        }
        public void AddAtomicGroupTest()
        {
            // Arrange
            var regexGenerator = new RegexGenerator();

            // Act
            regexGenerator.AddAtomicGroup(@"a");

            // 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 AddPositiveLookaheadAssertionTest()
        {
            // Arrange
            var regexGenerator = new RegexGenerator();

            // Act
            regexGenerator.AddPositiveLookaheadAssertion(@"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 AddNonCapturingGroupTest()
        {
            // Arrange
            var regexGenerator = new RegexGenerator();

            // Act
            regexGenerator.AddGroup(@"a", capturing: false);

            // 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());
        }
示例#10
0
        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);
        }
示例#11
0
        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);
        }
示例#12
0
        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);
        }
示例#13
0
        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);
        }
示例#14
0
        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);
        }
        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);
        }
示例#16
0
        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 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);
        }
示例#18
0
        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 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());
        }
示例#20
0
        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);
            });
        }
示例#22
0
        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 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 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 SimpleAtomicGroupPatternGenerationTest()
        {
            // Arrange
            var pattern         = @"(?>(\w)\1+).\b";
            var expectedPattern = $"/{pattern}/";

            Assert.Throws <AtomicGroupNotSupportedException>(() =>
            {
                var regexGenerator = new RegexGenerator(RegexLanguage.ECMAScript)
                                     .AddAtomicGroup(@"(\w)\1+")
                                     .Add(@".\b");

                // 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 pattern         = $@"\p{{{flag}}}+";
                var expectedPattern = $"/{pattern}/";

                Assert.Throws <UnicodeCategoryNotSupportedException>(() =>
                {
                    var regexGenerator = new RegexGenerator(RegexLanguage.ECMAScript)
                                         .AddUnicodeCategory(flag, min: 1);

                    // Act
                    var actualPattern = regexGenerator.ToString();

                    // Assert
                    Assert.Equal(expectedPattern, actualPattern);
                });
            }
        }
        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());
        }