示例#1
0
        public void TestSerialization_MatchIncorrectSurrogatePair()
        {
            var regex1 = new System.Text.RegularExpressions.Regex(@"[\uDC00-\uDFFF][\uD800-\uDBFF]"
                                                                  , System.Text.RegularExpressions.RegexOptions.IgnoreCase
                                                                  );
            var matcher1 = regex1.Compile();

            matcher1.Serialize("badsurrogatepair.bin");
            var matcher2 = RegexMatcher.Deserialize("badsurrogatepair.bin");

            string input = "_\uDD03\uD809_";

            var res1 = matcher1.Matches(input);
            var res2 = matcher2.Matches(input);

            Assert.IsTrue(res1[0].Item1 == 1 && res1[0].Item2 == 2);
            Assert.AreEqual(res1.Length, res2.Length);
            Assert.IsTrue(res1[0].Equals(res2[0]));
        }
        public void TestCA_IsMatch_PosAndNeg()
        {
            var regex       = new System.Text.RegularExpressions.Regex("^ab{4,10}c$");
            var sr          = (SymbolicRegex <ulong>)regex.Compile(false, false);
            var pos_samples = regex.GenerateRandomDataSet(10);
            var neg_samples = regex.Complement().GenerateRandomDataSet(10);
            var ca          = sr.Pattern.CreateCountingAutomaton();

            foreach (var str in pos_samples)
            {
                Assert.IsTrue(ca.IsMatch(str));
                Assert.IsTrue(regex.IsMatch(str));
            }
            foreach (var str in neg_samples)
            {
                Assert.IsFalse(ca.IsMatch(str));
                Assert.IsFalse(regex.IsMatch(str));
            }
        }
示例#3
0
        public void TestSerialization_IgnoreCase_BugFix()
        {
            var regex1 = new System.Text.RegularExpressions.Regex(@"[aA][bB][cC]?[dD]"
                                                                  , System.Text.RegularExpressions.RegexOptions.IgnoreCase
                                                                  );
            var matcher1 = regex1.Compile();

            matcher1.Serialize("test.bin");
            var matcher2 = RegexMatcher.Deserialize("test.bin");

            string input = @"xabdx";

            var res1 = matcher1.Matches(input);
            var res2 = matcher2.Matches(input);

            Assert.IsTrue(res1[0].Item1 == 1 && res1[0].Item2 == 3);
            Assert.AreEqual(res1.Length, res2.Length);
            Assert.IsTrue(res1[0].Equals(res2[0]));
        }