Cheers!
Pablo
On Mon, 2002-10-14 at 20:22, Miguel de Icaza wrote:
Hello! > The last problem I showed here is not ThreadNotify's fault. Seems to be > a bug in Queue.Dequeue. > If you look at the output of the test, you will notice it isn't accurate > to the data in the queue when you use Dequeue, but the commented part > with foreach works fine. This sounds like a case for someone to write some regression tests for Queue. Pablo, would you be interested in that? Miguel.
// System.Collections.Queue regression test
// Author: Pablo Baena
namespace queue_test
{
using System;
using System.Collections;
class test
{
public static int Main()
{
Queue queue = new Queue();
for (int i=0;i<100;i++) {
queue.Enqueue("Data #"+i);
}
if (test_iteration(queue)==1) {
Console.WriteLine("iteration in queue object failed");
return 1;
}
if (test_enum(queue)==1) {
Console.WriteLine("enumeration in queue object
failed");
return 1;
}
Queue queue2 = new Queue(queue);
if (test_peek(queue2)==1) {
Console.WriteLine("peek failed");
return 1;
}
if (test_dequeue(queue)==1) {
Console.WriteLine("dequeue failed");
return 1;
}
return 0;
}
static int test_iteration(Queue myqueue)
{
string tmp, tmp2;
int i = 0;
foreach (Object item in myqueue) {
tmp = "Data #"+i;
tmp2 = (string) item;
if (tmp!=tmp2)
return 1;
i++;
}
return 0;
}
static int test_enum(Queue myqueue)
{
string tmp, tmp2;
int i = 0;
IEnumerator qenum = myqueue.GetEnumerator();
while (qenum.MoveNext()) {
tmp = "Data #"+i;
tmp2 = (string) qenum.Current;
if (tmp!=tmp2)
return 1;
i++;
}
return 0;
}
static int test_dequeue(Queue myqueue)
{
string tmp, tmp2;
for (int i=0;i<100;i++) {
tmp = "Data #"+i;
tmp2 = (string) myqueue.Dequeue();
if (tmp!=tmp2)
return 1;
}
return 0;
}
static int test_peek(Queue myqueue)
{
string tmp, tmp2;
for (int i=0;i<100;i++) {
tmp = "Data #"+i;
tmp2 = (string) myqueue.Peek();
if (tmp!=tmp2)
return 1;
myqueue.Dequeue();
}
return 0;
}
}
}
