/// <exception cref="System.IO.IOException"></exception> private RefList <Ref> ParsePackedRefs(BufferedReader br) { RefListBuilder <Ref> all = new RefListBuilder <Ref>(); Ref last = null; bool peeled = false; bool needSort = false; string p; while ((p = br.ReadLine()) != null) { if (p[0] == '#') { if (p.StartsWith(PACKED_REFS_HEADER)) { p = Sharpen.Runtime.Substring(p, PACKED_REFS_HEADER.Length); peeled = p.Contains(PACKED_REFS_PEELED); } continue; } if (p[0] == '^') { if (last == null) { throw new IOException(JGitText.Get().peeledLineBeforeRef); } ObjectId id = ObjectId.FromString(Sharpen.Runtime.Substring(p, 1)); last = new ObjectIdRef.PeeledTag(RefStorage.PACKED, last.GetName(), last.GetObjectId (), id); all.Set(all.Size() - 1, last); continue; } int sp = p.IndexOf(' '); ObjectId id_1 = ObjectId.FromString(Sharpen.Runtime.Substring(p, 0, sp)); string name = Copy(p, sp + 1, p.Length); ObjectIdRef cur; if (peeled) { cur = new ObjectIdRef.PeeledNonTag(RefStorage.PACKED, name, id_1); } else { cur = new ObjectIdRef.Unpeeled(RefStorage.PACKED, name, id_1); } if (last != null && RefComparator.CompareTo(last, cur) > 0) { needSort = true; } all.Add(cur); last = cur; } if (needSort) { all.Sort(); } return(all.ToRefList()); }
public virtual void TestCopyConstructorReusesArray() { RefListBuilder<Ref> one = new RefListBuilder<Ref>(); one.Add(REF_A); RefList<Ref> two = new RefList<Ref>(one.ToRefList()); one.Set(0, REF_B); NUnit.Framework.Assert.AreSame(REF_B, two.Get(0)); }
public virtual void TestBuilder_ToString() { StringBuilder exp = new StringBuilder(); exp.Append("["); exp.Append(REF_A); exp.Append(", "); exp.Append(REF_B); exp.Append("]"); RefListBuilder<Ref> list = new RefListBuilder<Ref>(); list.Add(REF_A); list.Add(REF_B); NUnit.Framework.Assert.AreEqual(exp.ToString(), list.ToString()); }
public virtual void TestBuilder_Remove() { RefListBuilder<Ref> builder = new RefListBuilder<Ref>(); builder.Add(REF_A); builder.Add(REF_B); builder.Remove(0); NUnit.Framework.Assert.AreEqual(1, builder.Size()); NUnit.Framework.Assert.AreSame(REF_B, builder.Get(0)); }
public virtual void TestBuilder_Set() { RefListBuilder<Ref> builder = new RefListBuilder<Ref>(); builder.Add(REF_A); builder.Add(REF_A); NUnit.Framework.Assert.AreEqual(2, builder.Size()); NUnit.Framework.Assert.AreSame(REF_A, builder.Get(0)); NUnit.Framework.Assert.AreSame(REF_A, builder.Get(1)); RefList<Ref> list = builder.ToRefList(); NUnit.Framework.Assert.AreEqual(2, list.Size()); NUnit.Framework.Assert.AreSame(REF_A, list.Get(0)); NUnit.Framework.Assert.AreSame(REF_A, list.Get(1)); builder.Set(1, REF_B); list = builder.ToRefList(); NUnit.Framework.Assert.AreEqual(2, list.Size()); NUnit.Framework.Assert.AreSame(REF_A, list.Get(0)); NUnit.Framework.Assert.AreSame(REF_B, list.Get(1)); }