public static void TestQueueResizing()
{
Random random = new Random(5);
UnsafeBufferPool<int> pool = new UnsafeBufferPool<int>();
QuickQueue<int> queue = new QuickQueue<int>(pool, 2);
Queue<int> controlQueue = new Queue<int>();
for (int iterationIndex = 0; iterationIndex < 1000000; ++iterationIndex)
{
if (random.NextDouble() < 0.7)
{
queue.Enqueue(iterationIndex);
controlQueue.Enqueue(iterationIndex);
}
if (random.NextDouble() < 0.2)
{
queue.Dequeue();
controlQueue.Dequeue();
}
if (iterationIndex % 1000 == 0)
{
queue.EnsureCapacity(queue.Count * 3);
}
else if (iterationIndex % 7777 == 0)
{
queue.Compact();
}
}
Assert.IsTrue(queue.Count == controlQueue.Count);
while (queue.Count > 0)
{
var a = queue.Dequeue();
var b = controlQueue.Dequeue();
Assert.IsTrue(a == b);
Assert.IsTrue(queue.Count == controlQueue.Count);
}
}