/// <summary>
        /// This test is entangled with RegExpTest_1_Split_Test_0
        /// Should the Split Logic Break the Grep Logic will break also.
        /// </summary>
        /// <param name="arg">The input to match against using grep</param>
        /// <returns></returns>
        internal MFTestResults RegExpTest_2_Grep_Test_0(ref string[] arg)
        {
            bool testResult = false;

            string[] expectedResults;

            string[] acutalResults;

            Regex regex;

            try
            {
                regex           = new Regex("x+");
                expectedResults = new String[] { "xxxx", "xxxx" };
                acutalResults   = regex.GetMatches(arg);

                int al = acutalResults.Length;
                int el = expectedResults.Length;

                for (int i = 0; i < el; i++)
                {
                    Log.Comment("Actual[" + i + "] = " + acutalResults[i]);
                    testResult = TestTestsHelper.AssertEquals(ref TestTestsHelper.GrepFailString, ref expectedResults[i], ref acutalResults[i]);
                }

                testResult = TestTestsHelper.AssertEquals(ref TestTestsHelper.WrongNumberGrep, ref el, ref el);
            }
            catch (Exception ex)
            {
                Log.Exception("Unexpected Exception", ex);
                testResult = false;
            }
            return(testResult ? MFTestResults.Pass : MFTestResults.Fail);
        }
        public MFTestResults RegExpTest_1_Split_Test_0()
        {
            bool testResult = false;

            string[] expectedResults;

            string[] acutalResults;

            Regex regex;

            try
            {
                expectedResults = new string[] { "xyzzy", "yyz", "123" };
                regex           = new Regex("[ab]+");
                acutalResults   = regex.Split("xyzzyababbayyzabbbab123");
                TestTestsHelper.AssertEquals(ref expectedResults, ref acutalResults, out testResult);

                expectedResults = new string[] { "xxxx", "xxxx", "yyyy", "zzz" };
                regex           = new Regex("a*b");//match any amount of 'a' and 1 'b'
                acutalResults   = regex.Split("xxxxaabxxxxbyyyyaaabzzz");
                TestTestsHelper.AssertEquals(ref expectedResults, ref acutalResults, out testResult);

                // Grep Tests

                return(RegExpTest_2_Grep_Test_0(ref acutalResults));
            }
            catch (Exception ex)
            {
                Log.Exception("Unexpected Exception", ex);
                testResult = false;
            }

            return(testResult ? MFTestResults.Pass : MFTestResults.Fail);
        }
        public MFTestResults RegExpTest_3_Substring_Test_0()
        {
            bool testResult = false;

            String expected, actual;

            Regex regex;

            string message;

            try
            {
                Log.Comment("Test subst()");
                regex      = new Regex("a*b");
                expected   = "-foo-garply-wacky-";
                actual     = regex.Replace("aaaabfooaaabgarplyaaabwackyb", "-");
                message    = "Wrong result of substitution in\"a*b\"";
                testResult = TestTestsHelper.AssertEquals(ref message, ref expected, ref actual);

                Log.Comment("Test subst() with backreferences");
                regex      = new Regex("http://[.\\w?/~_@&=%]+");
                expected   = "visit us: 1234<a href=\"http://www.apache.org\">http://www.apache.org</a>!";
                actual     = regex.Replace("visit us: http://www.apache.org!", "1234<a href=\"$0\">$0</a>");
                message    = "Wrong subst() result";
                testResult = TestTestsHelper.AssertEquals(ref message, ref expected, ref actual);

                Log.Comment("Test subst() with backreferences without leading characters before first backreference");
                regex      = new Regex("(.*?)=(.*)");
                expected   = "variable_test_value12";
                actual     = regex.Replace("variable=value", "$1_test_$212");
                message    = "Wrong subst() result";
                testResult = TestTestsHelper.AssertEquals(ref message, ref expected, ref actual);

                Log.Comment("Test subst() with NO backreferences");
                regex      = new Regex("^a$");
                expected   = "b";
                actual     = regex.Replace("a", "b");
                message    = "Wrong subst() result";
                testResult = TestTestsHelper.AssertEquals(ref message, ref expected, ref actual);

                Log.Comment(" Test subst() with NO backreferences");
                regex      = new Regex("^a$", RegexOptions.Multiline);
                expected   = "\r\nb\r\n";
                actual     = regex.Replace("\r\na\r\n", "b");
                testResult = TestTestsHelper.AssertEquals(ref message, ref expected, ref actual);

                Log.Comment(" Test for Bug #36106 ");
                regex      = new Regex("fo(o)");
                actual     = regex.Replace("foo", "$1");
                expected   = "o";
                testResult = TestTestsHelper.AssertEquals(ref message, ref expected, ref actual);

                Log.Comment(" Test for Bug #36405 ");
                regex      = new Regex("^(.*?)(x)?$");
                actual     = regex.Replace("abc", "$1-$2");
                expected   = "abc-";
                testResult = TestTestsHelper.AssertEquals(ref message, ref expected, ref actual);

                regex      = new Regex("^(.*?)(x)?$");
                actual     = regex.Replace("abcx", "$1-$2");
                expected   = "abc-x";
                testResult = TestTestsHelper.AssertEquals(ref message, ref expected, ref actual);

                regex      = new Regex("([a-b]+?)([c-d]+)");
                actual     = regex.Replace("zzabcdzz", "$1-$2");
                expected   = "zzab-cdzz";
                testResult = TestTestsHelper.AssertEquals(ref message, ref expected, ref actual);
            }
            catch (Exception ex)
            {
                Log.Exception("Unexpected Exception", ex);
                testResult = false;
            }

            return(testResult ? MFTestResults.Pass : MFTestResults.Fail);
        }
Esempio n. 4
0
        public MFTestResults RegExpTest_4_RegexpOptions_Test_1_IgnoreCase()
        {
            bool testResult = false;

            Regex regex;

            try
            {
                Log.Comment(" Test RegexOptions.IgnoreCase");
                regex = new Regex("abc(\\w*)");
                Log.Comment("RegexOptions.IgnoreCase abc(\\w*)");
                regex.Options = RegexOptions.IgnoreCase;
                Log.Comment("abc(d*)");
                if (!regex.IsMatch("abcddd"))
                {
                    Log.Comment("Did not match 'abcddd'.");
                    testResult = false;
                }
                else
                {
                    Log.Comment("abcddd = true");
                    TestTestsHelper.ShowParens(ref regex);
                    testResult = true;
                }

                if (!regex.IsMatch("aBcDDdd"))
                {
                    Log.Comment("Did not match 'aBcDDdd'.");
                    testResult = false;
                }
                else
                {
                    Log.Comment("aBcDDdd = true");
                    TestTestsHelper.ShowParens(ref regex);
                    testResult = true;
                }

                if (!regex.IsMatch("ABCDDDDD"))
                {
                    Log.Comment("Did not match 'ABCDDDDD'.");
                    testResult = false;
                }
                else
                {
                    Log.Comment("ABCDDDDD = true");
                    TestTestsHelper.ShowParens(ref regex);
                    testResult = true;
                }

                regex         = new Regex("(A*)b\\1");
                regex.Options = RegexOptions.IgnoreCase;
                if (!regex.IsMatch("AaAaaaBAAAAAA"))
                {
                    Log.Comment("Did not match 'AaAaaaBAAAAAA'.");
                    testResult = false;
                }
                else
                {
                    Log.Comment("AaAaaaBAAAAAA = true");
                    TestTestsHelper.ShowParens(ref regex);
                    testResult = true;
                }

                regex         = new Regex("[A-Z]*");
                regex.Options = RegexOptions.IgnoreCase;
                if (!regex.IsMatch("CaBgDe12"))
                {
                    Log.Comment("Did not match 'CaBgDe12'.");
                    testResult = false;
                }
                else
                {
                    Log.Comment("CaBgDe12 = true");
                    TestTestsHelper.ShowParens(ref regex);
                    testResult = true;
                }
            }
            catch (Exception ex)
            {
                Log.Exception("Unexpected Exception", ex);
                testResult = false;
            }

            return(testResult ? MFTestResults.Pass : MFTestResults.Fail);
        }
Esempio n. 5
0
        public MFTestResults RegExpTest_0_PrecompiledMatch()
        {
            bool testResult = false;

            try
            {
                Log.Comment("Pre-compiled regular expression \"a*b\"");
                char[] re1instructions =
                {
                    (char)0x007c, (char)0x0000, (char)0x001a, (char)0x007c, (char)0x0000, (char)0x000d, (char)0x0041,
                    (char)0x0001, (char)0x0004, (char)0x0061, (char)0x007c, (char)0x0000, (char)0x0003, (char)0x0047,
                    (char)0x0000, (char)0xfff6, (char)0x007c, (char)0x0000, (char)0x0003, (char)0x004e, (char)0x0000,
                    (char)0x0003, (char)0x0041, (char)0x0001, (char)0x0004, (char)0x0062, (char)0x0045, (char)0x0000,
                    (char)0x0000,
                };

                //need to make internals visible to
                RegexProgram re1 = new RegexProgram(re1instructions);

                // Simple test of pre-compiled regular expressions
                Regex r = new Regex(re1);

                Log.Comment("Matching Precompiled Expression a*b");
                testResult = r.IsMatch("aaab");
                Log.Comment("aaab = " + testResult);
                TestTestsHelper.ShowParens(ref r);
                if (!testResult)
                {
                    Log.Comment("\"aaab\" doesn't match to precompiled \"a*b\"");
                }

                testResult = r.IsMatch("b");
                Log.Comment("b = " + testResult);
                TestTestsHelper.ShowParens(ref r);
                if (!testResult)
                {
                    Log.Comment("\"b\" doesn't match to precompiled \"a*b\"");
                }

                testResult = r.IsMatch("c");
                Log.Comment("c = " + testResult);
                TestTestsHelper.ShowParens(ref r);
                if (testResult)
                {
                    Log.Comment("\"c\" matches to precompiled \"a*b\"");
                    testResult = false;
                }

                testResult = r.IsMatch("ccccaaaaab");
                Log.Comment("ccccaaaaab = " + testResult);
                TestTestsHelper.ShowParens(ref r);
                if (!testResult)
                {
                    Log.Comment("\"ccccaaaaab\" doesn't match to precompiled \"a*b\"");
                }
            }
            catch (Exception ex)
            {
                Log.Exception("Unexpected Exception", ex);
                testResult = false;
            }

            return(testResult ? MFTestResults.Pass : MFTestResults.Fail);
        }