public virtual void TestSuccess()
        {
            // Manually force a delta of an object so we reuse it later.
            //
            TemporaryBuffer.Heap pack = new TemporaryBuffer.Heap(1024);
            PackHeader(pack, 2);
            pack.Write((Constants.OBJ_BLOB) << 4 | 1);
            Deflate(pack, new byte[] { (byte)('a') });
            pack.Write((Constants.OBJ_REF_DELTA) << 4 | 4);
            a.CopyRawTo(pack);
            Deflate(pack, new byte[] { unchecked ((int)(0x1)), unchecked ((int)(0x1)), unchecked (
                                           (int)(0x1)), (byte)('b') });
            Digest(pack);
            OpenPack(pack);
            // Verify the only storage of b is our packed delta above.
            //
            ObjectDirectory od = (ObjectDirectory)src.ObjectDatabase;

            NUnit.Framework.Assert.IsTrue(src.HasObject(b), "has b");
            NUnit.Framework.Assert.IsFalse(od.FileFor(b).Exists(), "b not loose");
            // Now use b but in a different commit than what is hidden.
            //
            TestRepository s = new TestRepository <Repository>(src);
            RevCommit      N = s.Commit().Parent(B).Add("q", b).Create();

            s.Update(R_MASTER, N);
            // Push this new content to the remote, doing strict validation.
            //
            TransportLocal  t = new _TransportLocal_210(this, src, UriOf(dst), dst.Directory);
            RemoteRefUpdate u = new RemoteRefUpdate(src, R_MASTER, R_MASTER, false, null, null
                                                    );
            //
            //
            // src name
            // dst name
            // do not force update
            // local tracking branch
            // expected id
            PushResult r;

            try
            {
                t.SetPushThin(true);
                r = t.Push(PM, Sharpen.Collections.Singleton(u));
            }
            finally
            {
                t.Close();
            }
            NUnit.Framework.Assert.IsNotNull(r, "have result");
            NUnit.Framework.Assert.IsNull(r.GetAdvertisedRef(R_PRIVATE), "private not advertised"
                                          );
            NUnit.Framework.Assert.AreEqual(RemoteRefUpdate.Status.OK, u.GetStatus(), "master updated"
                                            );
            NUnit.Framework.Assert.AreEqual(N, dst.Resolve(R_MASTER));
        }
		public virtual void TestSuccess()
		{
			// Manually force a delta of an object so we reuse it later.
			//
			TemporaryBuffer.Heap pack = new TemporaryBuffer.Heap(1024);
			PackHeader(pack, 2);
			pack.Write((Constants.OBJ_BLOB) << 4 | 1);
			Deflate(pack, new byte[] { (byte)('a') });
			pack.Write((Constants.OBJ_REF_DELTA) << 4 | 4);
			a.CopyRawTo(pack);
			Deflate(pack, new byte[] { unchecked((int)(0x1)), unchecked((int)(0x1)), unchecked(
				(int)(0x1)), (byte)('b') });
			Digest(pack);
			OpenPack(pack);
			// Verify the only storage of b is our packed delta above.
			//
			ObjectDirectory od = (ObjectDirectory)src.ObjectDatabase;
			NUnit.Framework.Assert.IsTrue(src.HasObject(b), "has b");
			NUnit.Framework.Assert.IsFalse(od.FileFor(b).Exists(), "b not loose");
			// Now use b but in a different commit than what is hidden.
			//
			TestRepository s = new TestRepository<Repository>(src);
			RevCommit N = s.Commit().Parent(B).Add("q", b).Create();
			s.Update(R_MASTER, N);
			// Push this new content to the remote, doing strict validation.
			//
			TransportLocal t = new _TransportLocal_210(this, src, UriOf(dst), dst.Directory);
			RemoteRefUpdate u = new RemoteRefUpdate(src, R_MASTER, R_MASTER, false, null, null
				);
			//
			//
			// src name
			// dst name
			// do not force update
			// local tracking branch
			// expected id
			PushResult r;
			try
			{
				t.SetPushThin(true);
				r = t.Push(PM, Sharpen.Collections.Singleton(u));
			}
			finally
			{
				t.Close();
			}
			NUnit.Framework.Assert.IsNotNull(r, "have result");
			NUnit.Framework.Assert.IsNull(r.GetAdvertisedRef(R_PRIVATE), "private not advertised"
				);
			NUnit.Framework.Assert.AreEqual(RemoteRefUpdate.Status.OK, u.GetStatus(), "master updated"
				);
			NUnit.Framework.Assert.AreEqual(N, dst.Resolve(R_MASTER));
		}