Beispiel #1
0
        public void TestSplit()
        {
            TextFile primary = new TextFile();

            primary.AddLines(new[] { "a", "b", "c", "d", "e", "f" });

            TextFile secondary = new TextFile();

            secondary.AddLines(new[] { "1", "2", "3", "4", "5", "6" });

            ModificationCollection modifications = new ModificationCollection(primary, secondary);

            modifications.AddNoChanged(0, 2);
            modifications.AddReplaced(2, 0, 2);
            modifications.AddAdded(4, 2);

            Modification[] splited = modifications[1].Split(1); // неверный индекс
            Assert.AreEqual(splited.Length, 1);
            Assert.AreSame(splited[0], modifications[1]);

            splited = modifications[1].Split(2); // граничный индекс
            Assert.AreEqual(splited.Length, 1);
            Assert.AreSame(splited[0], modifications[1]);

            splited = modifications[1].Split(3); // индекс в середине
            Assert.AreEqual(splited.Length, 2);
        }
        public void TestFindModificationByPrimaryIndex()
        {
            TextFile primary = new TextFile();

            primary.AddLines(new[] { "a", "b", "c", "d", "e", "f" });

            TextFile secondary = new TextFile();

            secondary.AddLines(new[] { "1", "2", "3", "4", "5", "6" });

            ModificationCollection modifications = new ModificationCollection(primary, secondary);

            modifications.AddNoChanged(0, 2);
            modifications.AddReplaced(2, 0, 2);
            modifications.AddNoChanged(4, 2);

            Modification wanted = modifications.FindModificationByPrimaryIndex(1);

            Assert.AreEqual(wanted.Index, 0);

            wanted = modifications.FindModificationByPrimaryIndex(3);
            Assert.AreEqual(wanted.Index, 1);

            wanted = modifications.FindModificationByPrimaryIndex(4);
            Assert.AreEqual(wanted.Index, 2);

            wanted = modifications.FindModificationByPrimaryIndex(5);
            Assert.AreEqual(wanted.Index, 2);
        }
Beispiel #3
0
        public void TestSplit()
        {
            TextFile primary = new TextFile();
            primary.AddLines(new[] { "a", "b", "c", "d", "e", "f" });

            TextFile secondary = new TextFile();
            secondary.AddLines(new[] { "1", "2", "3", "4", "5", "6" });

            ModificationCollection modifications = new ModificationCollection(primary, secondary);

            modifications.AddNoChanged(0, 2);
            modifications.AddReplaced(2, 0, 2);
            modifications.AddAdded(4, 2);

            Modification[] splited = modifications[1].Split(1); // неверный индекс
            Assert.AreEqual(splited.Length, 1);
            Assert.AreSame(splited[0], modifications[1]);

            splited = modifications[1].Split(2); // граничный индекс
            Assert.AreEqual(splited.Length, 1);
            Assert.AreSame(splited[0], modifications[1]);

            splited = modifications[1].Split(3); // индекс в середине
            Assert.AreEqual(splited.Length, 2);
        }
        public void TestFindModificationByPrimaryIndex()
        {
            TextFile primary = new TextFile();
            primary.AddLines(new[] {"a","b","c","d","e","f"});

            TextFile secondary = new TextFile();
            secondary.AddLines(new[] { "1", "2", "3", "4", "5", "6" });

            ModificationCollection modifications = new ModificationCollection(primary, secondary);

            modifications.AddNoChanged(0, 2);
            modifications.AddReplaced(2, 0, 2);
            modifications.AddNoChanged(4, 2);

            Modification wanted = modifications.FindModificationByPrimaryIndex(1);
            Assert.AreEqual(wanted.Index, 0);

            wanted = modifications.FindModificationByPrimaryIndex(3);
            Assert.AreEqual(wanted.Index, 1);

            wanted = modifications.FindModificationByPrimaryIndex(4);
            Assert.AreEqual(wanted.Index, 2);

            wanted = modifications.FindModificationByPrimaryIndex(5);
            Assert.AreEqual(wanted.Index, 2);
        }
        public void TestSplit()
        {
            TextFile primary = new TextFile();
            primary.AddLines(new[] { "a", "b", "c", "d", "e", "f" });

            TextFile secondary = new TextFile();
            secondary.AddLines(new[] { "1", "2", "3", "4", "5", "6" });

            ModificationCollection modifications = new ModificationCollection(primary, secondary);

            modifications.AddNoChanged(0, 2);
            modifications.AddReplaced(2, 0, 2);
            modifications.AddAdded(4, 2);

            modifications.Split(3); // индекс в середине
            Assert.AreEqual(modifications.Count, 4);
        }
        public void TestSplit()
        {
            TextFile primary = new TextFile();

            primary.AddLines(new[] { "a", "b", "c", "d", "e", "f" });

            TextFile secondary = new TextFile();

            secondary.AddLines(new[] { "1", "2", "3", "4", "5", "6" });

            ModificationCollection modifications = new ModificationCollection(primary, secondary);

            modifications.AddNoChanged(0, 2);
            modifications.AddReplaced(2, 0, 2);
            modifications.AddAdded(4, 2);

            modifications.Split(3); // индекс в середине
            Assert.AreEqual(modifications.Count, 4);
        }
Beispiel #7
0
        private bool DetermineModification(int primaryStart, int primaryEnd, int secondaryStart, int secondaryEnd, ModificationCollection modifications)
        {
            bool result          = false;
            int  primaryLength   = primaryEnd - primaryStart;
            int  secondaryLength = secondaryEnd - secondaryStart;

            if (secondaryLength > 0)
            {
                if (primaryLength > 0)
                {
                    var minLength = Math.Min(secondaryLength, primaryLength);
                    modifications.AddReplaced(primaryStart, secondaryStart, minLength);

                    if (secondaryLength > primaryLength)
                    {
                        secondaryStart += minLength;
                        modifications.AddAdded(secondaryStart, secondaryLength - primaryLength);
                    }
                    else
                    {
                        if (primaryLength > secondaryLength)
                        {
                            primaryStart += minLength;
                            modifications.AddRemoved(primaryStart, primaryLength - secondaryLength);
                        }
                    }
                }
                else
                {
                    modifications.AddAdded(secondaryStart, secondaryLength);
                }
                result = true;
            }
            else
            {
                if (primaryLength > 0)
                {
                    modifications.AddRemoved(primaryStart, primaryLength);
                    result = true;
                }
            }
            return(result);
        }
Beispiel #8
0
        private bool DetermineModification(int primaryStart, int primaryEnd, int secondaryStart, int secondaryEnd, ModificationCollection modifications)
        {
            bool result = false;
            int primaryLength = primaryEnd - primaryStart;
            int secondaryLength = secondaryEnd - secondaryStart;

            if (secondaryLength > 0)
            {
                if (primaryLength > 0)
                {
                    var minLength = Math.Min(secondaryLength, primaryLength);
                    modifications.AddReplaced(primaryStart, secondaryStart, minLength);

                    if (secondaryLength > primaryLength)
                    {
                        secondaryStart += minLength;
                        modifications.AddAdded(secondaryStart, secondaryLength - primaryLength);
                    }
                    else
                    {
                        if (primaryLength > secondaryLength)
                        {
                            primaryStart += minLength;
                            modifications.AddRemoved(primaryStart, primaryLength - secondaryLength);
                        }
                    }
                }
                else
                {
                    modifications.AddAdded(secondaryStart, secondaryLength);
                }
                result = true;
            }
            else
            {
                if (primaryLength > 0)
                {
                    modifications.AddRemoved(primaryStart, primaryLength);
                    result = true;
                }
            }
            return result;
        }