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()); }
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()); }
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()); }
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 } }
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 } }
/// <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); }