You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by sy...@apache.org on 2015/03/01 20:41:05 UTC
[2/5] lucenenet git commit: Added ToArray method to the PQ. Added
more tests to check resizing.
Added ToArray method to the PQ. Added more tests to check resizing.
Project: http://git-wip-us.apache.org/repos/asf/lucenenet/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucenenet/commit/bf98bcab
Tree: http://git-wip-us.apache.org/repos/asf/lucenenet/tree/bf98bcab
Diff: http://git-wip-us.apache.org/repos/asf/lucenenet/diff/bf98bcab
Branch: refs/heads/master
Commit: bf98bcabf991085f6cf35a62db12011e403769d1
Parents: abce0d5
Author: Guido Tagliavini Ponce <t-...@microsoft.com>
Authored: Wed Feb 18 12:01:33 2015 -0800
Committer: Guido Tagliavini Ponce <t-...@microsoft.com>
Committed: Wed Feb 18 12:01:33 2015 -0800
----------------------------------------------------------------------
src/Lucene.Net.Core/Util/PriorityQueue.cs | 7 +++++
.../core/Util/TestPriorityQueue.cs | 29 ++++++++++++++++++++
2 files changed, 36 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/bf98bcab/src/Lucene.Net.Core/Util/PriorityQueue.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Core/Util/PriorityQueue.cs b/src/Lucene.Net.Core/Util/PriorityQueue.cs
index 9b76121..296cac6 100644
--- a/src/Lucene.Net.Core/Util/PriorityQueue.cs
+++ b/src/Lucene.Net.Core/Util/PriorityQueue.cs
@@ -282,6 +282,13 @@ namespace Lucene.Net.Util
QueueSize = 0;
}
+ public T[] ToArray()
+ {
+ T[] copy = new T[QueueSize];
+ Array.Copy(Heap, 1, copy, 0, QueueSize);
+ return copy;
+ }
+
private void Resize()
{
int newSize = Math.Min(ArrayUtil.MAX_ARRAY_LENGTH - 1, 2*MaxSize);
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/bf98bcab/src/Lucene.Net.Tests/core/Util/TestPriorityQueue.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/core/Util/TestPriorityQueue.cs b/src/Lucene.Net.Tests/core/Util/TestPriorityQueue.cs
index eed8cc0..4f2f70e 100644
--- a/src/Lucene.Net.Tests/core/Util/TestPriorityQueue.cs
+++ b/src/Lucene.Net.Tests/core/Util/TestPriorityQueue.cs
@@ -373,6 +373,35 @@ namespace Lucene.Net.Util
}
[Test]
+ public static void TestIntegrityAfterResize()
+ {
+ // Tests that after a resize, the queue keeps working fine
+ PriorityQueue<int?> pq = new IntegerQueue(4);
+ pq.Add(3);
+ pq.Add(-2);
+ pq.Add(1);
+ pq.Add(-10);
+ pq.Add(-100); // Resize
+ Assert.AreEqual(pq.Top(), -100);
+
+ pq.Add(-1000);
+ Assert.AreEqual(pq.Top(), -1000);
+
+ pq.Pop();
+ Assert.AreEqual(pq.Top(), -100);
+
+ pq.Add(0);
+ Assert.AreEqual(pq.Top(), -100);
+
+ for(int i = 0; i < 100; i++)
+ {
+ pq.Add(5); // Lots of resizes
+ }
+
+ Assert.AreEqual(pq.Top(), -100);
+ }
+
+ [Test]
public virtual void TestClear()
{
PriorityQueue<int?> pq = new IntegerQueue(3);