예제 #1
0
        public void testAddTwo()
        {
            Edit     e1 = new Edit(1, 2, 1, 1);
            Edit     e2 = new Edit(8, 8, 8, 12);
            EditList l  = new EditList();

            l.Add(e1);
            l.Add(e2);
            Assert.AreEqual(2, l.size());
            Assert.AreSame(e1, l.get(0));
            Assert.AreSame(e2, l.get(1));

            IEnumerator i = l.GetEnumerator();

            i.Reset();
            i.MoveNext();
            Assert.AreSame(e1, i.Current);
            i.MoveNext();
            Assert.AreSame(e2, i.Current);

            Assert.IsTrue(l.Equals(l));
            Assert.IsFalse(l.Equals(new EditList()));

            EditList l2 = new EditList();

            l2.Add(e1);
            l2.Add(e2);
            Assert.IsTrue(l.Equals(l2));
            Assert.IsTrue(l2.Equals(l));
            Assert.AreEqual(l.GetHashCode(), l2.GetHashCode());
        }
예제 #2
0
        /// <summary>
        /// Returns a list describing the content edits performed within the hunk.
        /// </summary>
        /// <returns></returns>
        public EditList ToEditList()
        {
            var r = new EditList();

            byte[] buf    = _file.Buffer;
            int    c      = RawParseUtils.nextLF(buf, _startOffset);
            int    oLine  = _oldImage.StartLine;
            int    nLine  = NewStartLine;
            Edit   inEdit = null;

            for (; c < EndOffset; c = RawParseUtils.nextLF(buf, c))
            {
                bool breakScan;

                switch (buf[c])
                {
                case (byte)' ':
                case (byte)'\n':
                    inEdit = null;
                    oLine++;
                    nLine++;
                    continue;

                case (byte)'-':
                    if (inEdit == null)
                    {
                        inEdit = new Edit(oLine - 1, nLine - 1);
                        r.Add(inEdit);
                    }
                    oLine++;
                    inEdit.ExtendA();
                    continue;

                case (byte)'+':
                    if (inEdit == null)
                    {
                        inEdit = new Edit(oLine - 1, nLine - 1);
                        r.Add(inEdit);
                    }
                    nLine++;
                    inEdit.ExtendB();
                    continue;

                case (byte)'\\':                         // Matches "\ No newline at end of file"
                    continue;

                default:
                    breakScan = true;
                    break;
                }

                if (breakScan)
                {
                    break;
                }
            }

            return(r);
        }
예제 #3
0
        public void testRemove()
        {
            Edit     e1 = new Edit(1, 2, 1, 1);
            Edit     e2 = new Edit(8, 8, 8, 12);
            EditList l  = new EditList();

            l.Add(e1);
            l.Add(e2);
            l.Remove(e1);
            Assert.AreEqual(1, l.size());
            Assert.AreSame(e2, l.get(0));
        }
예제 #4
0
        public void testAddOne()
        {
            Edit     e = new Edit(1, 2, 1, 1);
            EditList l = new EditList();

            l.Add(e);
            Assert.AreEqual(1, l.size());
            Assert.IsFalse(l.isEmpty());
            Assert.AreSame(e, l.get(0));
            IEnumerator i = l.GetEnumerator();

            i.Reset();
            i.MoveNext();
            Assert.AreSame(e, i.Current);

            Assert.IsTrue(l.Equals(l));
            Assert.IsFalse(l.Equals(new EditList()));

            EditList l2 = new EditList();

            l2.Add(e);
            Assert.IsTrue(l.Equals(l2));
            Assert.IsTrue(l2.Equals(l));
            Assert.AreEqual(l.GetHashCode(), l2.GetHashCode());
        }
예제 #5
0
        public void testAddTwo()
        {
            Edit e1 = new Edit(1, 2, 1, 1);
            Edit e2 = new Edit(8, 8, 8, 12);
            EditList l = new EditList();
            l.Add(e1);
            l.Add(e2);
            Assert.AreEqual(2, l.size());
            Assert.AreSame(e1, l.get(0));
            Assert.AreSame(e2, l.get(1));

            IEnumerator i = l.GetEnumerator();
            i.Reset();
            i.MoveNext();
            Assert.AreSame(e1, i.Current);
            i.MoveNext();
            Assert.AreSame(e2, i.Current);

            Assert.IsTrue(l.Equals(l));
            Assert.IsFalse(l.Equals(new EditList()));

            EditList l2 = new EditList();
            l2.Add(e1);
            l2.Add(e2);
            Assert.IsTrue(l.Equals(l2));
            Assert.IsTrue(l2.Equals(l));
            Assert.AreEqual(l.GetHashCode(), l2.GetHashCode());
        }
예제 #6
0
        public void testSet()
        {
            Edit     e1 = new Edit(1, 2, 1, 1);
            Edit     e2 = new Edit(3, 4, 3, 3);
            EditList l  = new EditList();

            l.Add(e1);
            Assert.AreSame(e1, l.get(0));
            Assert.AreSame(e1, l.set(0, e2));
            Assert.AreSame(e2, l.get(0));
        }
예제 #7
0
        public override bool Load(DbRow dr)
        {
            if (base.Load(dr))
            {
                foreach (string i in _EditList.Split(','))
                {
                    if (i.IsInt())
                    {
                        EditList.Add(i.ToInt());
                    }
                }

                return(true);
            }

            return(false);
        }
예제 #8
0
        public void testAddOne()
        {
            Edit e = new Edit(1, 2, 1, 1);
            EditList l = new EditList();
            l.Add(e);
            Assert.AreEqual(1, l.size());
            Assert.IsFalse(l.isEmpty());
            Assert.AreSame(e, l.get(0));
            IEnumerator i = l.GetEnumerator();
            i.Reset();
            i.MoveNext();
            Assert.AreSame(e, i.Current);

            Assert.IsTrue(l.Equals(l));
            Assert.IsFalse(l.Equals(new EditList()));

            EditList l2 = new EditList();
            l2.Add(e);
            Assert.IsTrue(l.Equals(l2));
            Assert.IsTrue(l2.Equals(l));
            Assert.AreEqual(l.GetHashCode(), l2.GetHashCode());
        }
예제 #9
0
        /// <summary>
        /// Returns a list describing the content edits performed within the hunk.
        /// </summary>
        /// <returns></returns>
        internal EditList ToEditList()
        {
            var r = new EditList();
            byte[] buf = Buffer;
            int c = RawParseUtils.nextLF(buf, _startOffset);
            int oLine = OldStartLine;
            int nLine = NewStartLine;
            Edit inEdit = null;

            for (; c < Buffer.Length; c = RawParseUtils.nextLF(buf, c))
            {
                bool breakScan;

                switch (buf[c])
                {
                    case (byte)' ':
                    case (byte)'\n':
                        inEdit = null;
                        oLine++;
                        nLine++;
                        continue;

                    case (byte)'-':
                        if (inEdit == null)
                        {
                            inEdit = new Edit(oLine - 1, nLine - 1);
                            r.Add(inEdit);
                        }
                        oLine++;
                        inEdit.ExtendA();
                        continue;

                    case (byte)'+':
                        if (inEdit == null)
                        {
                            inEdit = new Edit(oLine - 1, nLine - 1);
                            r.Add(inEdit);
                        }
                        nLine++;
                        inEdit.ExtendB();
                        continue;

                    case (byte)'\\': // Matches "\ No newline at end of file"
                        continue;

                    default:
                        breakScan = true;
                        break;
                }

                if (breakScan)
                {
                    break;
                }
            }

            return r;
        }
예제 #10
0
 public void testRemove()
 {
     Edit e1 = new Edit(1, 2, 1, 1);
     Edit e2 = new Edit(8, 8, 8, 12);
     EditList l = new EditList();
     l.Add(e1);
     l.Add(e2);
     l.Remove(e1);
     Assert.AreEqual(1, l.size());
     Assert.AreSame(e2, l.get(0));
 }
예제 #11
0
 public void testSet()
 {
     Edit e1 = new Edit(1, 2, 1, 1);
     Edit e2 = new Edit(3, 4, 3, 3);
     EditList l = new EditList();
     l.Add(e1);
     Assert.AreSame(e1, l.get(0));
     Assert.AreSame(e1, l.set(0, e2));
     Assert.AreSame(e2, l.get(0));
 }