/// <exception cref="System.IO.IOException"></exception>
        private void DoTest()
        {
            dst = dstBuf.ToByteArray();
            DeltaIndex di = new DeltaIndex(src);

            di.Encode(actDeltaBuf, dst);
            byte[] actDelta = actDeltaBuf.ToByteArray();
            byte[] expDelta = expDeltaBuf.ToByteArray();
            NUnit.Framework.Assert.AreEqual(BinaryDelta.Format(expDelta, false), BinaryDelta.
                                            Format(actDelta, false));
            //
            NUnit.Framework.Assert.IsTrue(actDelta.Length > 0, "delta is not empty");
            NUnit.Framework.Assert.AreEqual(src.Length, BinaryDelta.GetBaseSize(actDelta));
            NUnit.Framework.Assert.AreEqual(dst.Length, BinaryDelta.GetResultSize(actDelta));
            CollectionAssert.AreEquivalent(dst, BinaryDelta.Apply(src, actDelta));
        }
        /// <exception cref="System.IO.IOException"></exception>
        private void AssertValidState()
        {
            NUnit.Framework.Assert.AreEqual(data.Length, dataPtr, "test filled example result"
                                            );
            delta = deltaBuf.ToByteArray();
            NUnit.Framework.Assert.AreEqual(@base.Length, BinaryDelta.GetBaseSize(delta));
            NUnit.Framework.Assert.AreEqual(data.Length, BinaryDelta.GetResultSize(delta));
            var appliedDelta = BinaryDelta.Apply(@base, delta);

            Assert.AreEqual(data.Length, appliedDelta.Length);
            for (int i = 0; i < data.Length; i++)
            {
                Assert.AreEqual(data[i], appliedDelta[i]);
            }

            // Assert that a single bulk read produces the correct result.
            //
            byte[]      act = new byte[data.Length];
            DeltaStream @in = Open();

            NUnit.Framework.Assert.AreEqual(data.Length, @in.GetSize());
            NUnit.Framework.Assert.AreEqual(data.Length, @in.Read(act));
            NUnit.Framework.Assert.AreEqual(-1, @in.Read());
            NUnit.Framework.Assert.IsTrue(Arrays.Equals(data, act), "bulk read has same content"
                                          );
            // Assert that smaller tiny reads have the same result too.
            //
            act = new byte[data.Length];
            @in = Open();
            int read = 0;

            while (read < data.Length)
            {
                int n = @in.Read(act, read, 128);
                if (n <= 0)
                {
                    break;
                }
                read += n;
            }
            NUnit.Framework.Assert.AreEqual(data.Length, read);
            NUnit.Framework.Assert.AreEqual(-1, @in.Read());
            NUnit.Framework.Assert.IsTrue(Arrays.Equals(data, act), "small reads have same content"
                                          );
        }