Sure!!! I hope this is enough. I will make more as I found more errors. I don't know the guidelines to make these tests so please inform me of any mistakes.

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;                       
                }
        }
}

Reply via email to