private string ReportDiff(string oldQuery, string newQuery)
        {
            int c = 0;

            for (; c < Math.Min(oldQuery.Length, newQuery.Length); c++)
            {
                if (oldQuery[c] != newQuery[c])
                {
                    break;
                }
            }
            return($"Old: {CsUtility.ReportSegment(oldQuery, c, 400)}\r\nNew: {CsUtility.ReportSegment(newQuery, c, 400)}");
        }
示例#2
0
        public void ReportSegment()
        {
            var tests = new ListOfTuples <string, int, int, string>
            {
                { "", -100, 3, "" },
                { "", -1, 3, "" },
                { "", 0, 3, "" },
                { "", 1, 3, "" },
                { "", 100, 3, "" },

                { "abc", -1000, 100, "abc" },
                { "abc", -10, 100, "abc" },
                { "abc", 0, 100, "abc" },
                { "abc", 10, 100, "abc" },
                { "abc", 1000, 100, "abc" },

                { "abcde", 0, 1, "a..." },
                { "abcde", 1, 1, "...b..." },
                { "abcde", 5, 1, "...e" },

                { "abcde", -10, 3, "abc..." },
                { "abcde", -1, 3, "abc..." },
                { "abcde", 0, 3, "abc..." },
                { "abcde", 1, 3, "abc..." },
                { "abcde", 2, 3, "...bcd..." },
                { "abcde", 3, 3, "...cde" },
                { "abcde", 4, 3, "...cde" },
                { "abcde", 5, 3, "...cde" },
                { "abcde", 10, 3, "...cde" },

                { "abcde", -10, 2, "ab..." },
                { "abcde", -1, 2, "ab..." },
                { "abcde", 0, 2, "ab..." },
                { "abcde", 1, 2, "ab..." },
                { "abcde", 2, 2, "...bc..." },
                { "abcde", 3, 2, "...cd..." },
                { "abcde", 4, 2, "...de" },
                { "abcde", 5, 2, "...de" },
                { "abcde", 10, 2, "...de" },

                { "\r\n\t", 0, 1, @"\r..." },
                { "\r\n\t", 1, 1, @"...\n..." },
                { "\r\n\t", 2, 1, @"...\t" },
                { "\r\n\t\\", 2, 10, @"\r\n\t\\" },
            };

            foreach (var test in tests)
            {
                Assert.AreEqual(test.Item4, CsUtility.ReportSegment(test.Item1, test.Item2, test.Item3), $"Test: {test.Item1} {test.Item2} {test.Item3}");
            }
        }