Beispiel #1
0
        public void testMerge_WithPrefix()
        {
            global::GitSharp.Core.Ref a = newRef("refs/heads/A", ID_ONE);
            global::GitSharp.Core.Ref b = newRef("refs/heads/foo/bar/B", ID_TWO);
            global::GitSharp.Core.Ref c = newRef("refs/heads/foo/rab/C", ID_TWO);
            global::GitSharp.Core.Ref g = newRef("refs/heads/g", ID_ONE);
            packed = toList(a, b, c, g);

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

            Assert.AreEqual(2, map.size());

            Assert.AreSame(b, map.get("bar/B"));
            Assert.AreSame(c, map.get("rab/C"));
            Assert.IsNull(map.get("refs/heads/foo/bar/B"));
            Assert.IsNull(map.get("refs/heads/A"));

            Assert.IsTrue(map.containsKey("bar/B"));
            Assert.IsTrue(map.containsKey("rab/C"));
            Assert.IsFalse(map.containsKey("refs/heads/foo/bar/B"));
            Assert.IsFalse(map.containsKey("refs/heads/A"));

            IteratorBase <RefMap.Ent> itr = map.entrySet().iterator();

            RefMap.Ent ent;
            Assert.IsTrue(itr.hasNext());
            ent = itr.next();
            Assert.AreEqual("bar/B", ent.getKey());
            Assert.AreSame(b, ent.getValue());
            Assert.IsTrue(itr.hasNext());
            ent = itr.next();
            Assert.AreEqual("rab/C", ent.getKey());
            Assert.AreSame(c, ent.getValue());
            Assert.IsFalse(itr.hasNext());
        }
Beispiel #2
0
        public void testMerge_HeadMaster()
        {
            global::GitSharp.Core.Ref master = newRef("refs/heads/master", ID_ONE);
            global::GitSharp.Core.Ref headU  = newRef("HEAD", "refs/heads/master");
            global::GitSharp.Core.Ref headR  = newRef("HEAD", master);

            loose    = toList(headU, master);
            resolved = toList(headR);

            RefMap map = new RefMap("", packed, loose, resolved);

            Assert.AreEqual(2, map.size());
            Assert.IsFalse(map.isEmpty());
            Assert.IsTrue(map.containsKey("refs/heads/master"));
            Assert.AreSame(master, map.get("refs/heads/master"));

            // resolved overrides loose given same name
            Assert.AreSame(headR, map.get("HEAD"));

            IteratorBase <global::GitSharp.Core.Ref> itr = map.values().iterator();

            Assert.IsTrue(itr.hasNext());
            Assert.AreSame(headR, itr.next());
            Assert.IsTrue(itr.hasNext());
            Assert.AreSame(master, itr.next());
            Assert.IsFalse(itr.hasNext());
        }
Beispiel #3
0
        public void testEntryType()
        {
            global::GitSharp.Core.Ref a = newRef("refs/heads/A", ID_ONE);
            global::GitSharp.Core.Ref b = newRef("refs/heads/B", ID_TWO);

            packed = toList(a, b);

            RefMap map = new RefMap("refs/heads/", packed, loose, resolved);
            IteratorBase <RefMap.Ent> itr = map.entrySet().iterator();

            RefMap.Ent ent_a = itr.next();
            RefMap.Ent ent_b = itr.next();

            Assert.AreEqual(ent_a.GetHashCode(), "A".GetHashCode());
            Assert.IsTrue(ent_a.Equals(ent_a));
            Assert.IsFalse(ent_a.Equals(ent_b));

            Assert.AreEqual(a.ToString(), ent_a.ToString());
        }
Beispiel #4
0
        public void testIterator_FailsAtEnd()
        {
            global::GitSharp.Core.Ref master = newRef("refs/heads/master", ID_ONE);
            loose = toList(master);

            RefMap map = new RefMap("", packed, loose, resolved);
            IteratorBase <global::GitSharp.Core.Ref> itr = map.values().iterator();

            Assert.IsTrue(itr.hasNext());
            Assert.AreSame(master, itr.next());
            try
            {
                itr.next();
                Assert.Fail("iterator allowed next");
            }
            catch (IndexOutOfRangeException)
            {
                // expected
            }
        }
Beispiel #5
0
        public void testIterator_RefusesRemove()
        {
            global::GitSharp.Core.Ref master = newRef("refs/heads/master", ID_ONE);
            loose = toList(master);

            RefMap map = new RefMap("", packed, loose, resolved);
            IteratorBase <global::GitSharp.Core.Ref> itr = map.values().iterator();

            Assert.IsTrue(itr.hasNext());
            Assert.AreSame(master, itr.next());
            try
            {
                itr.remove();
                Assert.Fail("iterator allowed remove");
            }
            catch (NotSupportedException)
            {
                // expected
            }
        }
Beispiel #6
0
 /// <summary>
 /// Helper method which returns the next Edit for an Iterator over Edits.
 /// When there are no more edits left this method will return the constant
 /// END_EDIT.
 /// </summary>
 /// <param name="it">the iterator for which the next edit should be returned</param>
 /// <returns>the next edit from the iterator or END_EDIT if there no more edits</returns>
 private static Edit nextEdit(IteratorBase<Edit> it)
 {
     return (it.hasNext() ? it.next() : END_EDIT);
 }
 /// <summary>
 /// Helper method which returns the next Edit for an Iterator over Edits.
 /// When there are no more edits left this method will return the constant
 /// END_EDIT.
 /// </summary>
 /// <param name="it">the iterator for which the next edit should be returned</param>
 /// <returns>the next edit from the iterator or END_EDIT if there no more edits</returns>
 private static Edit nextEdit(IteratorBase <Edit> it)
 {
     return(it.hasNext() ? it.next() : END_EDIT);
 }