コード例 #1
0
		public virtual void TestEmptyMap()
		{
			ObjectIdOwnerMap<ObjectIdOwnerMapTest.SubId> m = new ObjectIdOwnerMap<ObjectIdOwnerMapTest.SubId
				>();
			NUnit.Framework.Assert.IsTrue(m.IsEmpty());
			NUnit.Framework.Assert.AreEqual(0, m.Size());
			Iterator<ObjectIdOwnerMapTest.SubId> i = m.Iterator();
			NUnit.Framework.Assert.IsNotNull(i);
			NUnit.Framework.Assert.IsFalse(i.HasNext());
			NUnit.Framework.Assert.IsFalse(m.Contains(Id(1)));
		}
コード例 #2
0
ファイル: BaseSearch.cs プロジェクト: LunarLanding/ngit
		internal BaseSearch(ProgressMonitor countingMonitor, ICollection<RevTree> bases, 
			ObjectIdOwnerMap<ObjectToPack> objects, IList<ObjectToPack> edges, ObjectReader 
			or)
		{
			progress = countingMonitor;
			reader = or;
			baseTrees = Sharpen.Collections.ToArray(bases, new ObjectId[bases.Count]);
			objectsMap = objects;
			edgeObjects = edges;
			alreadyProcessed = new IntSet();
			treeCache = new ObjectIdOwnerMap<BaseSearch.TreeWithData>();
			parser = new CanonicalTreeParser();
			idBuf = new MutableObjectId();
		}
コード例 #3
0
ファイル: BaseSearch.cs プロジェクト: TetradogOther/NGit
 internal BaseSearch(ProgressMonitor countingMonitor, ICollection <RevTree> bases,
                     ObjectIdOwnerMap <ObjectToPack> objects, IList <ObjectToPack> edges, ObjectReader
                     or)
 {
     progress         = countingMonitor;
     reader           = or;
     baseTrees        = Sharpen.Collections.ToArray(bases, new ObjectId[bases.Count]);
     objectsMap       = objects;
     edgeObjects      = edges;
     alreadyProcessed = new IntSet();
     treeCache        = new ObjectIdOwnerMap <BaseSearch.TreeWithData>();
     parser           = new CanonicalTreeParser();
     idBuf            = new MutableObjectId();
 }
コード例 #4
0
ファイル: PackParser.cs プロジェクト: LunarLanding/ngit
		/// <summary>Parse the pack stream.</summary>
		/// <remarks>Parse the pack stream.</remarks>
		/// <param name="receiving">
		/// receives progress feedback during the initial receiving
		/// objects phase. If null,
		/// <see cref="NGit.NullProgressMonitor">NGit.NullProgressMonitor</see>
		/// will be
		/// used.
		/// </param>
		/// <param name="resolving">receives progress feedback during the resolving objects phase.
		/// 	</param>
		/// <returns>
		/// the pack lock, if one was requested by setting
		/// <see cref="SetLockMessage(string)">SetLockMessage(string)</see>
		/// .
		/// </returns>
		/// <exception cref="System.IO.IOException">the stream is malformed, or contains corrupt objects.
		/// 	</exception>
		public virtual PackLock Parse(ProgressMonitor receiving, ProgressMonitor resolving
			)
		{
			if (receiving == null)
			{
				receiving = NullProgressMonitor.INSTANCE;
			}
			if (resolving == null)
			{
				resolving = NullProgressMonitor.INSTANCE;
			}
			if (receiving == resolving)
			{
				receiving.Start(2);
			}
			try
			{
				ReadPackHeader();
				entries = new PackedObjectInfo[(int)objectCount];
				baseById = new ObjectIdOwnerMap<PackParser.DeltaChain>();
				baseByPos = new LongMap<PackParser.UnresolvedDelta>();
				deferredCheckBlobs = new BlockList<PackedObjectInfo>();
				receiving.BeginTask(JGitText.Get().receivingObjects, (int)objectCount);
				try
				{
					for (int done = 0; done < objectCount; done++)
					{
						IndexOneObject();
						receiving.Update(1);
						if (receiving.IsCancelled())
						{
							throw new IOException(JGitText.Get().downloadCancelled);
						}
					}
					ReadPackFooter();
					EndInput();
				}
				finally
				{
					receiving.EndTask();
				}
				if (!deferredCheckBlobs.IsEmpty())
				{
					DoDeferredCheckBlobs();
				}
				if (deltaCount > 0)
				{
					if (resolving is BatchingProgressMonitor)
					{
						((BatchingProgressMonitor)resolving).SetDelayStart(1000, TimeUnit.MILLISECONDS);
					}
					resolving.BeginTask(JGitText.Get().resolvingDeltas, deltaCount);
					ResolveDeltas(resolving);
					if (entryCount < objectCount)
					{
						if (!IsAllowThin())
						{
							throw new IOException(MessageFormat.Format(JGitText.Get().packHasUnresolvedDeltas
								, Sharpen.Extensions.ValueOf(objectCount - entryCount)));
						}
						ResolveDeltasWithExternalBases(resolving);
						if (entryCount < objectCount)
						{
							throw new IOException(MessageFormat.Format(JGitText.Get().packHasUnresolvedDeltas
								, Sharpen.Extensions.ValueOf(objectCount - entryCount)));
						}
					}
					resolving.EndTask();
				}
				packDigest = null;
				baseById = null;
				baseByPos = null;
			}
			finally
			{
				try
				{
					if (readCurs != null)
					{
						readCurs.Release();
					}
				}
				finally
				{
					readCurs = null;
				}
				try
				{
					inflater.Release();
				}
				finally
				{
					inflater = null;
				}
			}
			return null;
		}
コード例 #5
0
		public virtual void TestAddGetAndContains()
		{
			ObjectIdOwnerMap<ObjectIdOwnerMapTest.SubId> m = new ObjectIdOwnerMap<ObjectIdOwnerMapTest.SubId
				>();
			m.Add(id_1);
			m.Add(id_2);
			m.Add(id_3);
			m.Add(id_a31);
			m.Add(id_b31);
			NUnit.Framework.Assert.IsFalse(m.IsEmpty());
			NUnit.Framework.Assert.AreEqual(5, m.Size());
			NUnit.Framework.Assert.AreSame(id_1, m.Get(id_1));
			NUnit.Framework.Assert.AreSame(id_1, m.Get(Id(1)));
			NUnit.Framework.Assert.AreSame(id_1, m.Get(Id(1).Copy()));
			NUnit.Framework.Assert.AreSame(id_2, m.Get(Id(2).Copy()));
			NUnit.Framework.Assert.AreSame(id_3, m.Get(Id(3).Copy()));
			NUnit.Framework.Assert.AreSame(id_a31, m.Get(Id(31).Copy()));
			NUnit.Framework.Assert.AreSame(id_b31, m.Get(id_b31.Copy()));
			NUnit.Framework.Assert.IsTrue(m.Contains(id_1));
		}
コード例 #6
0
		public virtual void TestIterator()
		{
			ObjectIdOwnerMap<ObjectIdOwnerMapTest.SubId> m = new ObjectIdOwnerMap<ObjectIdOwnerMapTest.SubId
				>();
			m.Add(id_1);
			m.Add(id_2);
			m.Add(id_3);
			Iterator<ObjectIdOwnerMapTest.SubId> i = m.Iterator();
			NUnit.Framework.Assert.IsTrue(i.HasNext());
			NUnit.Framework.Assert.AreSame(id_1, i.Next());
			NUnit.Framework.Assert.IsTrue(i.HasNext());
			NUnit.Framework.Assert.AreSame(id_2, i.Next());
			NUnit.Framework.Assert.IsTrue(i.HasNext());
			NUnit.Framework.Assert.AreSame(id_3, i.Next());
			NUnit.Framework.Assert.IsFalse(i.HasNext());
			try
			{
				i.Next();
				NUnit.Framework.Assert.Fail("did not fail on next with no next");
			}
			catch (NoSuchElementException)
			{
			}
			// OK
			i = m.Iterator();
			NUnit.Framework.Assert.AreSame(id_1, i.Next());
			try
			{
				i.Remove();
				NUnit.Framework.Assert.Fail("did not fail on remove");
			}
			catch (NotSupportedException)
			{
			}
		}
コード例 #7
0
		public virtual void TestAddIfAbsentGrowsWithObjects()
		{
			int n = 16384;
			ObjectIdOwnerMap<ObjectIdOwnerMapTest.SubId> m = new ObjectIdOwnerMap<ObjectIdOwnerMapTest.SubId
				>();
			m.Add(id_1);
			for (int i = 32; i < n; i++)
			{
				m.AddIfAbsent(new ObjectIdOwnerMapTest.SubId(Id(i)));
			}
			NUnit.Framework.Assert.AreEqual(n - 32 + 1, m.Size());
			NUnit.Framework.Assert.AreSame(id_1, m.Get(id_1.Copy()));
			for (int i_1 = 32; i_1 < n; i_1++)
			{
				NUnit.Framework.Assert.IsTrue(m.Contains(Id(i_1)));
			}
		}
コード例 #8
0
		public virtual void TestAddIfAbsent()
		{
			ObjectIdOwnerMap<ObjectIdOwnerMapTest.SubId> m = new ObjectIdOwnerMap<ObjectIdOwnerMapTest.SubId
				>();
			m.Add(id_1);
			NUnit.Framework.Assert.AreSame(id_1, m.AddIfAbsent(new ObjectIdOwnerMapTest.SubId
				(id_1)));
			NUnit.Framework.Assert.AreEqual(1, m.Size());
			NUnit.Framework.Assert.AreSame(id_2, m.AddIfAbsent(id_2));
			NUnit.Framework.Assert.AreEqual(2, m.Size());
			NUnit.Framework.Assert.AreSame(id_a31, m.AddIfAbsent(id_a31));
			NUnit.Framework.Assert.AreSame(id_b31, m.AddIfAbsent(id_b31));
			NUnit.Framework.Assert.AreSame(id_a31, m.AddIfAbsent(new ObjectIdOwnerMapTest.SubId
				(id_a31)));
			NUnit.Framework.Assert.AreSame(id_b31, m.AddIfAbsent(new ObjectIdOwnerMapTest.SubId
				(id_b31)));
			NUnit.Framework.Assert.AreEqual(4, m.Size());
		}