예제 #1
0
        private bool GetDiffTest(string oldText, string newText)
        {
            var result = DiffLogic.GetDiff(oldText, newText);

            int diffCount = 0;

            foreach (var r in result)
            {
                if (r.DiffType == Definition.DIFF_TYPE.DIFF_ADD)
                {
                    // ex.)
                    //      old :  abc
                    //            ^ Insert before [1]st char => index = 0
                    //      new : 1abc
                    //
                    oldText    = oldText.Insert(r.OldDataIndex + diffCount, r.DiffObjcet.ToString());
                    diffCount += r.DiffObjcet.ToString().Length;
                }
                else if (r.DiffType == Definition.DIFF_TYPE.DIFF_DEL)
                {
                    // ex.)
                    //      old : abc
                    //            ^ Delete [1]st char => index = 1
                    //      new :  bc
                    //
                    oldText    = oldText.Remove(r.OldDataIndex - 1 + diffCount, r.DiffObjcet.ToString().Length);
                    diffCount -= r.DiffObjcet.ToString().Length;
                }
            }

            return(newText == oldText);
        }
예제 #2
0
        public void Diffing_EqualStrings()
        {
            // Testing data
            string   left  = Base64String.DecodeBase64String("AAAAAA==");
            string   right = Base64String.DecodeBase64String("AAAAAA==");
            DiffData diff  = new DiffData
            {
                Id        = 1,
                LeftData  = left,
                RightData = right
            };

            // Expected result
            DiffResponse expected = new DiffResponse
            {
                DiffResultType = "Equals",
                Diffs          = null
            };

            // Actual result
            DiffLogic    logic  = new DiffLogic();
            DiffResponse actual = logic.Diffing(diff);

            // Assert
            Assert.AreEqual(expected.DiffResultType, actual.DiffResultType);
            Assert.AreEqual(expected.Diffs, actual.Diffs);
        }
예제 #3
0
        public void Diffing_DifferentStrings()
        {
            // Testing data
            string   left  = Base64String.DecodeBase64String("AAAAAA==");
            string   right = Base64String.DecodeBase64String("AQABAQ==");
            DiffData diff  = new DiffData
            {
                Id        = 1,
                LeftData  = left,
                RightData = right
            };

            // Expected result
            List <Diff> diffs = new List <Diff>
            {
                new Diff
                {
                    Offset = 0,
                    Length = 1
                },
                new Diff
                {
                    Offset = 2,
                    Length = 2
                }
            };

            DiffResponse expected = new DiffResponse
            {
                DiffResultType = "ContentDoNotMatch",
                Diffs          = diffs
            };

            // Actual result
            DiffLogic    logic  = new DiffLogic();
            DiffResponse actual = logic.Diffing(diff);

            // Assert
            Assert.AreEqual(expected.DiffResultType, actual.DiffResultType);
            Assert.AreEqual(expected.Diffs.Count, actual.Diffs.Count);

            int length = expected.Diffs.Count;

            for (int i = 0; i < length; i++)
            {
                Assert.AreEqual(expected.Diffs[i].Length, actual.Diffs[i].Length);
                Assert.AreEqual(expected.Diffs[i].Offset, actual.Diffs[i].Offset);
            }
        }
예제 #4
0
 public DiffController()
 {
     diffLogic = new DiffLogic();
 }