コード例 #1
0
        public void RepositionTest()
        {
            var builder = new SearchAndReplaceBuilder();

            builder.AddReplacement(Pattern.RegexI("[a-z0-9]+ +[a-z0-9]+"), (dest, src, s, e) =>
            {
                for (e = s; src[e] != ' '; ++e)
                {
                }

                dest.Append(src, s, e).Append(", ");
                for (; src[e] == ' '; ++e)
                {
                }

                return(e);
            });
            var replacer = builder.BuildStringReplacer();

            var instr = " one two  three   four five ";
            var want  = " one, two, three, four, five ";
            var have  = replacer(instr);

            Assert.Equal(want, have);
        }
コード例 #2
0
        private static Func <string, string> CreateStringReplacer()
        {
            var builder = new SearchAndReplaceBuilder();

            builder.AddReplacement(DfaLex.Pattern.Regex(Pattern), (dest, srcStr, s, e) => 0);
            return(builder.BuildStringReplacer());
        }
コード例 #3
0
ファイル: RegexSpeedTest.cs プロジェクト: magne/dfalex.net
        private int TimeSearchAndReplaceBuilder(string src, string patString)
        {
            Func <string, string> replacer;
            {
                var builder = new SearchAndReplaceBuilder();
                builder.AddReplacement(Pattern.Regex(patString), (dest, srcStr, s, e) => 0);
                replacer = builder.BuildStringReplacer();
            }

            var count     = 0;
            var stopWatch = new Stopwatch();

            stopWatch.Start();
            var str = src;

            for (var t = stopWatch.ElapsedMilliseconds; t < SpinUp + 1000; t = stopWatch.ElapsedMilliseconds)
            {
                str = replacer(str);
                if (t >= SpinUp)
                {
                    ++count;
                }
            }

            Assert.Equal(src, str);
            return(count);
        }
コード例 #4
0
        public void CrazyWontonTest()
        {
            var builder = new SearchAndReplaceBuilder();

            builder.AddReplacement(Pattern.RegexI("(<name>)"), StringReplacements.Delete);
            var replacer = builder.BuildStringReplacer();
            var instr    = ReadResource("SearcherTestInput2.txt");
            var have     = replacer(instr);
            var want     = instr.Replace("<name>", string.Empty).Replace("<NAME>", string.Empty);

            Assert.Equal(want, have);
        }
コード例 #5
0
        public void ReplacementSurroundTest()
        {
            var builder = new SearchAndReplaceBuilder();

            builder.AddReplacement(Pattern.RegexI("[a-zA-z]*"), StringReplacements.Surround("(", StringReplacements.ToUpper, ")"));
            var replacer = builder.BuildStringReplacer();

            var instr = " one two  three   four five ";
            var want  = " (ONE) (TWO)  (THREE)   (FOUR) (FIVE) ";
            var have  = replacer(instr);

            Assert.Equal(want, have);
        }
コード例 #6
0
        public void ReplacementStringTest()
        {
            var builder = new SearchAndReplaceBuilder();

            builder.AddReplacement(Pattern.RegexI("[a-zA-z]*"), StringReplacements.String("x"));
            var replacer = builder.BuildStringReplacer();

            var instr = " one two  three   four five ";
            var want  = " x x  x   x x ";
            var have  = replacer(instr);

            Assert.Equal(want, have);
        }
コード例 #7
0
        public void ReplacementSpaceOrNewlineTest()
        {
            var builder = new SearchAndReplaceBuilder();

            builder.AddReplacement(Pattern.RegexI("[\0- ]+"), StringReplacements.SpaceOrNewline);
            var replacer = builder.BuildStringReplacer();

            var instr = "    one \n two\r\n\r\nthree  \t four\n\n\nfive ";
            var want  = " one\ntwo\nthree four\nfive ";
            var have  = replacer(instr);

            Assert.Equal(want, have);
        }
コード例 #8
0
        public void ReplacementCaseTest()
        {
            var builder = new SearchAndReplaceBuilder();

            builder.AddReplacement(Pattern.RegexI("u[a-zA-z]*"), StringReplacements.ToUpper);
            builder.AddReplacement(Pattern.RegexI("l[a-zA-z]*"), StringReplacements.ToLower);
            var replacer = builder.BuildStringReplacer();

            var instr = "lAbCd uAbCd";
            var want  = "labcd UABCD";
            var have  = replacer(instr);

            Assert.Equal(want, have);
        }
コード例 #9
0
        public void ReplacementDeleteIgnoreTest()
        {
            var builder = new SearchAndReplaceBuilder();

            builder.AddReplacement(Pattern.RegexI("three"), StringReplacements.Ignore);
            builder.AddReplacement(Pattern.RegexI("[a-z0-9]+"), StringReplacements.Delete);
            var replacer = builder.BuildStringReplacer();

            var instr = " one two  three   four five ";
            var want  = "    three     ";
            var have  = replacer(instr);

            Assert.Equal(want, have);
        }
コード例 #10
0
        public void TestReplaceFunc()
        {
            var builder = new SearchAndReplaceBuilder();

            foreach (JavaToken tok in Enum.GetValues(typeof(JavaToken)))
            {
                builder.AddReplacement(tok.Pattern(), (dest, src, s, e) => TokenReplace(dest, tok, src, s, e));
            }

            var replacer = builder.BuildStringReplacer();
            var instr    = ReadResource("SearcherTestInput.txt");
            var want     = ReadResource("SearcherTestOutput.txt");
            var have     = replacer(instr);

            Assert.Equal(want, have);
        }