/// <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); }
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); }
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); }