public virtual void TestPut_WithPrefix()
        {
            Ref refA_one = NewRef("refs/heads/A", ID_ONE);
            Ref refA_two = NewRef("refs/heads/A", ID_TWO);

            packed = ToList(refA_one);
            RefMap map = new RefMap("refs/heads/", packed, loose, resolved);

            NUnit.Framework.Assert.AreSame(refA_one, map.Get("A"));
            NUnit.Framework.Assert.AreSame(refA_one, map.Put("A", refA_two));
            // map changed, but packed, loose did not
            NUnit.Framework.Assert.AreSame(refA_two, map.Get("A"));
            NUnit.Framework.Assert.AreSame(refA_one, packed.Get(0));
            NUnit.Framework.Assert.AreEqual(0, loose.Size());
            NUnit.Framework.Assert.AreSame(refA_two, map.Put("A", refA_one));
            NUnit.Framework.Assert.AreSame(refA_one, map.Get("A"));
        }
        public virtual void TestPut_KeyMustMatchName_WithPrefix()
        {
            Ref    refA = NewRef("refs/heads/A", ID_ONE);
            RefMap map  = new RefMap("refs/heads/", packed, loose, resolved);

            try
            {
                map.Put("FOO", refA);
                NUnit.Framework.Assert.Fail("map accepted invalid key/value pair");
            }
            catch (ArgumentException)
            {
            }
        }
        public virtual void TestPut_CollapseResolved()
        {
            Ref master = NewRef("refs/heads/master", ID_ONE);
            Ref headU  = NewRef("HEAD", "refs/heads/master");
            Ref headR  = NewRef("HEAD", master);
            Ref a      = NewRef("refs/heads/A", ID_ONE);

            loose    = ToList(headU, master);
            resolved = ToList(headR);
            RefMap map = new RefMap(string.Empty, packed, loose, resolved);

            NUnit.Framework.Assert.IsNull(map.Put(a.GetName(), a));
            NUnit.Framework.Assert.AreSame(a, map.Get(a.GetName()));
            NUnit.Framework.Assert.AreSame(headR, map.Get("HEAD"));
        }