Esempio n. 1
0
        public void LegasyTest(SingleFileTest test)
        {
            var xreg          = test.GetRoot().Element(RegexTag);
            var xoreg         = test.GetRoot().Element(OregexTag);
            var regexOptions  = GetRegexOptions(xreg);
            var oRegexOptions = GetORegexOptions(xoreg);

            // ReSharper disable once PossibleNullReferenceException
            var regexPattern = xreg.Value;
            // ReSharper disable once PossibleNullReferenceException
            var oregexPattern = xoreg.Value;

            // ReSharper disable once PossibleNullReferenceException
            var text = test.GetRoot().Element(TextTag).Value;

            var regex  = new Regex(regexPattern, regexOptions);
            var oregex = new DebugORegex(oregexPattern, oRegexOptions);

            var regexMatches  = regex.Matches(text).Cast <Match>().ToArray();
            var oregexMatches = oregex.Matches(text.ToCharArray()).ToArray();

            Trace.TraceInformation("Text length: " + text.Length + "\n");


            Console.WriteLine("##############################################################");
            try
            {
                Assert.AreEqual(regexMatches.Length, oregexMatches.Length);
                for (int i = 0; i < regexMatches.Length; i++)
                {
                    var rm  = regexMatches[i];
                    var orm = oregexMatches[i];
                    Compare(rm, orm);
                }
            }
            catch
            {
                Console.WriteLine("##############################################################");
                Console.WriteLine("#                         EXPECTED                           #");
                Console.WriteLine("##############################################################");
                foreach (var m in regexMatches)
                {
                    Console.WriteLine(ExpectedString(m));
                }
                throw;
            }
            finally
            {
                Console.WriteLine("##############################################################");
                Console.WriteLine("#                         ACTUAL                             #");
                Console.WriteLine("##############################################################");
                foreach (var m in oregexMatches)
                {
                    Console.WriteLine(ActualString(m));
                }
                Console.WriteLine("##############################################################");
            }
        }