[Mono-list] Re: [Gtk-sharp-list] ThreadNotify (A bug in
 Queue.Dequeue method)
   
    Pablo Baena
     
    pbaena@uol.com.ar
       
    14 Oct 2002 19:40:49 +0000
    
    
  
--=-nXHfOB+UgDYkn3f/IbKr
Content-Type: multipart/alternative; boundary="=-y7cJWFf6CBbb7HpSenjr"
--=-y7cJWFf6CBbb7HpSenjr
Content-Type: text/plain
Content-Transfer-Encoding: 7bit
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.
--=-y7cJWFf6CBbb7HpSenjr
Content-Type: text/html; charset=utf-8
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
  <META NAME="GENERATOR" CONTENT="GtkHTML/1.0.4">
</HEAD>
<BODY>
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.
<BR>
<BR>
Cheers!
<BR>
Pablo
<BR>
<BR>
<BR>
<BR>
<BR>
On Mon, 2002-10-14 at 20:22, Miguel de Icaza wrote:
    <BLOCKQUOTE>
<PRE><FONT COLOR="#737373"><FONT SIZE="3"><I>Hello!</FONT></FONT></I>
<FONT COLOR="#737373"><FONT SIZE="3"><I></FONT></FONT></I>
<FONT COLOR="#737373"><FONT SIZE="3"><I>> The last problem I showed here is not ThreadNotify's fault. Seems to be</FONT></FONT></I>
<FONT COLOR="#737373"><FONT SIZE="3"><I>> a bug in Queue.Dequeue. </FONT></FONT></I>
<FONT COLOR="#737373"><FONT SIZE="3"><I>> If you look at the output of the test, you will notice it isn't accurate</FONT></FONT></I>
<FONT COLOR="#737373"><FONT SIZE="3"><I>> to the data in the queue when you use Dequeue, but the commented part</FONT></FONT></I>
<FONT COLOR="#737373"><FONT SIZE="3"><I>> with foreach works fine. </FONT></FONT></I>
<FONT COLOR="#737373"><FONT SIZE="3"><I></FONT></FONT></I>
<FONT COLOR="#737373"><FONT SIZE="3"><I>This sounds like a case for someone to write some regression tests for</FONT></FONT></I>
<FONT COLOR="#737373"><FONT SIZE="3"><I>Queue.  Pablo, would you be interested in that?</FONT></FONT></I>
<FONT COLOR="#737373"><FONT SIZE="3"><I></FONT></FONT></I>
<FONT COLOR="#737373"><FONT SIZE="3"><I>Miguel.</FONT></FONT></I></PRE>
    </BLOCKQUOTE>
<TABLE CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<TR>
<TD>
<PRE></PRE>
</TD>
</TR>
</TABLE>
</BODY>
</HTML>
--=-y7cJWFf6CBbb7HpSenjr--
--=-nXHfOB+UgDYkn3f/IbKr
Content-Disposition: attachment; filename=testqueue.cs
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; name=testqueue.cs; charset=ISO-8859-1
// System.Collections.Queue regression test
// Author: Pablo Baena
namespace queue_test
{
	using System;
	using System.Collections;
	class test
	{
		public static int Main()
		{
			Queue queue =3D new Queue();
			for (int i=3D0;i<100;i++) {
				queue.Enqueue("Data #"+i);
			}
		=09
			if (test_iteration(queue)=3D=3D1) {
				Console.WriteLine("iteration in queue object failed");
				return 1;
			}
							=09
			if (test_enum(queue)=3D=3D1) {
				Console.WriteLine("enumeration in queue object failed");
				return 1;
			}
			Queue queue2 =3D new Queue(queue);
			if (test_peek(queue2)=3D=3D1) {
				Console.WriteLine("peek failed");
				return 1;
			}
						=09
			if (test_dequeue(queue)=3D=3D1) {
				Console.WriteLine("dequeue failed");
				return 1;
			}
		=09
			return 0;
		}
		static int test_iteration(Queue myqueue)
		{
			string tmp, tmp2;
			int i =3D 0;
			foreach (Object item in myqueue) {
				tmp =3D "Data #"+i;
				tmp2 =3D (string) item;
				if (tmp!=3Dtmp2)
					return 1;=09
				i++;
			}
			return 0;
		}
	=09
		static int test_enum(Queue myqueue)
		{
			string tmp, tmp2;
			int i =3D 0;
			IEnumerator qenum =3D myqueue.GetEnumerator();
			while (qenum.MoveNext()) {
				tmp =3D "Data #"+i;
				tmp2 =3D (string) qenum.Current;
			=09
				if (tmp!=3Dtmp2)
					return 1;
				i++;
			}
			return 0;
		}
		static int test_dequeue(Queue myqueue)
		{	=09
			string tmp, tmp2;
			for (int i=3D0;i<100;i++) {
				tmp =3D "Data #"+i;
				tmp2 =3D (string) myqueue.Dequeue();
			=09
				if (tmp!=3Dtmp2)
					return 1;
			}
			return 0;
		}
	=09
		static int test_peek(Queue myqueue)
		{			=09
			string tmp, tmp2;
			for (int i=3D0;i<100;i++) {
				tmp =3D "Data #"+i;
				tmp2 =3D (string) myqueue.Peek();
				if (tmp!=3Dtmp2)
					return 1;
				myqueue.Dequeue();
			}
			return 0;		=09
		}
	}
}
--=-nXHfOB+UgDYkn3f/IbKr--