Browse Source

Flush

svn path=/trunk/mono/; revision=9384
Miguel de Icaza 23 years ago
parent
commit
a8dcefd2cc
8 changed files with 458 additions and 52 deletions
  1. 34 9
      doc/class-status.in
  2. 45 13
      doc/contributing
  3. 6 0
      doc/index
  4. 144 4
      doc/testing
  5. 34 9
      web/class-status.in
  6. 45 13
      web/contributing
  7. 6 0
      web/index
  8. 144 4
      web/testing

+ 34 - 9
doc/class-status.in

@@ -1,17 +1,42 @@
 * Status of the various pieces of the class library
 
-	You can browse the status of the class library and see who has
-	registered to work on what parts of the system.  These list
-	work-in-progress components currently.
+	Classes in Mono are organized by the assembly that they belong to. 
 
-	Browse the current <a href="class-status/index.html">status</a>.
+	Here is the status of the different assemblies:
+	<ul>
+		<li><a href="http://www.go-mono.com/class-status-corlib.html">corlib</a>: The core library.
+		<li><a href="http://www.go-mono.com/class-status-System.html">System</a>.
+		<li><a href="http://www.go-mono.com/class-status-System.Xml.html">System.Xml</a>.
 
-	You can also download the XML <a
-	href="class-status/maintainers.xml">maintainers</a> file that
-	contains the actual maintainers list.  
+		<li><a
+		href="http://www.go-mono.com/class-status-System.Data.html">System.Data</a>:
+		Database access functionality (also check the <a href="ado-net.html">Mono ADO.NET status</a> pages).
 
-	You can also download the master <a
-	href="class-status/class.xml">Class Status XML</a> file.
+		<li><a href="http://www.go-mono.com/class-status-System.Drawing.html">System.Drawing</a>.
+
+		<li><a
+		href="http://www.go-mono.com/class-status-System.Web.html">System.Web</a>:
+		ASP.NET classes, also check the <a href="asp-net.html">Mono ASP.NET status pages</a>
+
+		<li><a href="http://www.go-mono.com/class-status-System.Web.Services.html">System.Web.Services</a>.
+
+		<li><a
+		href="http://www.go-mono.com/class-status-Microsoft.VisualBasic.html">Microsoft.VisualBasic</a>:
+		Support runtime for Visual Basic applications
+
+		<li><a
+		href="http://www.go-mono.com/class-status-Windows.Forms.html">Windows.Forms</a>:
+		there is also a <a
+		href="http://lists.ximian.com/mailman/listinfo/mono-winforms-list">mailing
+		list available</a>
+
+		<li><a href="http://www.go-mono.com/class-status-System.EnterpriseServices.html">EnterpriseServices</a>.
+
+		<li><a
+		href="http://www.go-mono.com/class-status-System.Runtime.Serialization.Formatters.Soap.html">System.Runtime.Serialization.Formatters.Soap</a>.
+
+		
+	</ul>
 
 * List of not-implemented classes
 

+ 45 - 13
doc/contributing

@@ -1,18 +1,50 @@
 * Contributing to the Mono project
 
-	There are many ways in which you can help in the Mono project:
-
-	<ul>
-		* <b>Programmers:</b> You can work on a free
-		  implementation of the <a
-		  href="class-library.html">class libraries</a>, the
-		  <a href="runtime.html">runtime engine</a>, <a
-		  href="tools.html">the tools</a>, the <a
-		  href="testing.html">testing framework</a>
-
-		* <b>Writers:</b> You can help us bywriting <a
-		  href="documentation.html">documentation</a>.
-	</ul>
+	Mono has not been completed yet.  It is a project under
+	active development and with a vibrant community.  If you are
+	looking at ways of helping the project, you have come to the
+	right web page. 
+
+	There are three different philosophical approaches to helping
+	the Mono project, the selfish way, the altruistic or the
+	educational way.
+
+	The <b>selfish</b> way is packed with adventure.  You start by
+	building your own software, and start using the compiler and
+	tools that come with Mono.  Eventually you will run into
+	missing features, or a bug in the software.  Since we ship all
+	the source code for Mono, you can start tracking down the
+	problem.  Depending on how much time you have to devote to the
+	problem you could: <a href="http://bugzilla.ximian.com">File a
+	bug report</a>;  track down the problem and provide a better
+	<a href="http://bugzilla.ximian.com">bug report</a>;  fix the
+	bug and provide a patch (you can <a
+	href="mailto:[email protected]">post it</a> to the <a
+	href="http://lists.ximian.com/mailman/listinfo/mono-list">mono
+	mailing list</a>;  or discuss the solution on the mailing
+	list.   Ideally you will also write a <a
+	href="testing.html">regression test</a> so the bug does not
+	get re-introduced in the future. 
+
+	The <b>altruistic</b> is probably the easiest because you get
+	to pick a piece of Mono that you might want to work on.  You
+	can pick an unfinished <a href="class-library.html">class</a> (from our <a
+	href="class-status.html">class status page</a>); help with the
+	<a href="documentation.html">documentation effort</a> (<a
+	href="http://lists.ximian.com/mailman/listinfo/mono-docs-list">mailing
+	list for the documentation effort</a>); fix existing <a
+	href=http://bugzilla.ximian.com/buglist.cgi?product=Mono%2FClass+Libraries&product=Mono%2FRuntime&component=CORLIB&component=misc&component=System&component=System.Web&component=System.XML&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&changedin=&chfieldfrom=&chfieldto=Now&chfieldvalue=&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&keywords=&keywords_type=anywords&op_sys_details=&op_sys_details_type=substring&version_details=&version_details_type=substring&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time&form_name=query">runtime
+	bugs</a>; <a
+	href="http://bugzilla.ximian.com/buglist.cgi?product=Mono%2FMCS&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&changedin=&chfieldfrom=&chfieldto=Now&chfieldvalue=&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&keywords=&keywords_type=anywords&op_sys_details=&op_sys_details_type=substring&version_details=&version_details_type=substring&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time&form_name=query">compiler
+	bugs</a>; help with the <a href="tools.html">tools</a> or
+	writing <a href="testing.html">tests</a> that help make Mono
+	more robust or help with the <a
+	href="http://www.go-mono.com/winforms.html">Winforms
+	effort</a>.
+
+	The <b>educational</b> way is an interesting one, because you
+	pick a technology you are interested in, and work on that
+	technology to learn the technology.  
 
 	Those are just broad things that need to be worked on, but
 	something that would help tremendously would be to help with

+ 6 - 0
doc/index

@@ -86,6 +86,12 @@
   </tr>
 </table>
 
+@item Nov 27th, 2002: Press release, tutorials
+
+http://www.ximian.com/about_us/press_center/press_releases/index.html?pr=openlink_mono
+
+	SWF progress.
+
 @item Nov 19th, 2002: Crypto update; Books; Gtk# Datagrid; .NET ONE Slides
 
 	Sebastien has got DSA and RSA signatures <a

+ 144 - 4
doc/testing

@@ -9,13 +9,153 @@
 ** Class Library Tests
 
 	All classes in Mono libraries should have comprehensive unit test
-	suites to go with them. Unit testing is a software engineering
-  	methodology that makes it easier to build correct code. Every
+	suites to go with them.  Unit testing is a software engineering
+  	methodology that makes it easier to build correct code.  Every
   	method in every class should have a set of tests to verify
-  	that they work correctly. Mono also needs a testing framework
+  	that they work correctly.  Mono also needs a testing framework
 	to make it easy to write and run lots of tests. 
 
-	Try <a href="http://nunit.sourceforge.net">NUnit</a>
+
+** Getting started
+
+	If you are new to writing NUnit tests, there is a template you may use
+	to help get started. The file is:
+
+		<b>mcs/class/doc/TemplateTest.cs</b>
+
+	Save a copy of this file in the appropriate test subdirecty
+	(see below), and replace all the [text] markers with
+	appropriate code. Comments in the template are there to guide
+	you. You should also look at existing tests to see how other
+	people have written them.
+	mcs/class/corlib/Test/System.Collections/CollectionBaseTest.cs
+	is a small one that might help.
+
+	The directory that will contain your new file depends on the
+	assembly/namespace of the class for which you are creating the
+	tests.  Under mcs/class there is a directory for each
+	assembly. In each assembly there is a Test directory,
+	e.g. mcs/class/corlib/Test. In the Test directory there are
+	sub-directories for each namespace in the assembly,
+	e.g. mcs/class/corlib/Test/Sytem. Put your new test file in
+	the appropriate sub-directory under Test for the class you are
+	testing.
+	
+	Once your test class is complete, you need to add it to the
+	AllTests.cs file in the same directory as your new test. Add a
+	call to "suite.AddTest()" passing the name of your new test
+	class's suite property as the parameter.  You will see
+	examples in the AllTests.cs file, so just copy and paste
+	inside there.
+	
+	Once all of that is done, you can do a 'make test' from the top mcs
+	directory.  Your test class will be automagically included in the
+	build and the tests will be run along with all the others.
+
+* Tips on writing Unit tests.
+
+	You should look at the NUnit documentation, as it is a
+	fantastic product, and includes fantastic documentation, but
+	here are some tips for those of you who are already reading
+	this web page.
+
+
+** Provide an unique error message for Assert()
+
+	Include an unique message for each Assert() so that when the assert
+	fails, it is trivial to locate the failing one. Otherwise, it may be
+	difficult to determine which part of the test is failing. A good way
+	to ensure unique messages is to use something like #A01, #A02 etc.
+
+	    Ok:
+	<pre>
+	
+		AssertEquals("array match", compare[0], i1[0]);
+		AssertEquals("array match", compare[1], i1[1]);
+		AssertEquals("array match", compare[2], i1[2]);
+		AssertEquals("array match", compare[3], i1[3]);
+	</pre>
+
+	    Excellent:
+	<pre>
+		AssertEquals("#A01", compare[0], i1[0]);
+		AssertEquals("#A02", compare[1], i1[1]);
+		AssertEquals("#A03", compare[2], i1[2]);
+		AssertEquals("#A04", compare[3], i1[3]);
+	</pre>
+	
+	Once you used such a number in an Assert(), don't change it later on -
+	people might use it it identify the test in bug reports or in mailing
+	lists.
+
+** Use AssertEquals() to compare things, not Assert().
+
+	Do not compare two values with Assert() - if the test fails,
+	people have no idea what went wrong while AssertEquals()
+	reports the failed value.
+
+	Ok:
+	<pre>
+	        Assert ("A01", myTicks[0] == t1.Ticks);
+	</pre>
+
+	Excellent:
+	<pre>
+	        AssertEquals ("A01", myTicks[0], t1.Ticks);
+	</pre>
+
+** Constructors
+
+	When writing your testcase, please make sure to provide a constructor
+	which takes no arguments:
+
+	<pre>
+        public class DateTimeTest : TestCase
+        {
+
+                public DateTimeTest() : base ("[MonoTests.System.DateTimeTest]") {}
+                public DateTimeTest (string name): base(name) {}
+
+        	public static ITest Suite
+                {
+                        get {
+                                TestSuite suite = new TestSuite ();
+        			return suite;
+        		}
+        	}
+        }
+	</pre>
+
+** Namespace
+
+	Please keep the namespace within each test directory consistent - all
+	tests which are referenced in the same AllTests.cs must be in the same
+	namespace. Of course you can use subnamespaces as you like -
+	especially for subdirectories of your testsuite.
+	
+	For instance, if your AllTests.cs is in namespace "MonoTests" and you
+	have a subdirectory called "System", you can put all the tests in that
+	dir into namespace "MonoTests.System".
+	
+** Test your test with the Microsoft runtime
+	
+	If possible, try to run your testsuite with the Microsoft runtime on
+	Windows and make sure all tests in it pass. This is especially
+	important if you're writing a totally new testcase - without this
+	check you can never be sure that your testcase contains no bugs ....
+	
+	Don't worry if you're writing your test on Linux, other people can
+	test it for you on Windows.
+	
+	Sometimes you may discover that a test doesn't show the expected
+	result when run with the Microsoft runtime - either because there is a
+	bug in their runtime or something is misleading or wrong in their
+	documentation. In this case, please put a detailed description of the
+	problem to mcs/class/doc/API-notes and do also report it to the list -
+	we'll forward this to the Microsoft people from time to time to help
+	them fix their documentation and runtime.
+
+** Unit tets.
 
 	Why do unit testing? It becomes simple to run automated tests
 	for the whole library. Unit tests are a safety net - you can

+ 34 - 9
web/class-status.in

@@ -1,17 +1,42 @@
 * Status of the various pieces of the class library
 
-	You can browse the status of the class library and see who has
-	registered to work on what parts of the system.  These list
-	work-in-progress components currently.
+	Classes in Mono are organized by the assembly that they belong to. 
 
-	Browse the current <a href="class-status/index.html">status</a>.
+	Here is the status of the different assemblies:
+	<ul>
+		<li><a href="http://www.go-mono.com/class-status-corlib.html">corlib</a>: The core library.
+		<li><a href="http://www.go-mono.com/class-status-System.html">System</a>.
+		<li><a href="http://www.go-mono.com/class-status-System.Xml.html">System.Xml</a>.
 
-	You can also download the XML <a
-	href="class-status/maintainers.xml">maintainers</a> file that
-	contains the actual maintainers list.  
+		<li><a
+		href="http://www.go-mono.com/class-status-System.Data.html">System.Data</a>:
+		Database access functionality (also check the <a href="ado-net.html">Mono ADO.NET status</a> pages).
 
-	You can also download the master <a
-	href="class-status/class.xml">Class Status XML</a> file.
+		<li><a href="http://www.go-mono.com/class-status-System.Drawing.html">System.Drawing</a>.
+
+		<li><a
+		href="http://www.go-mono.com/class-status-System.Web.html">System.Web</a>:
+		ASP.NET classes, also check the <a href="asp-net.html">Mono ASP.NET status pages</a>
+
+		<li><a href="http://www.go-mono.com/class-status-System.Web.Services.html">System.Web.Services</a>.
+
+		<li><a
+		href="http://www.go-mono.com/class-status-Microsoft.VisualBasic.html">Microsoft.VisualBasic</a>:
+		Support runtime for Visual Basic applications
+
+		<li><a
+		href="http://www.go-mono.com/class-status-Windows.Forms.html">Windows.Forms</a>:
+		there is also a <a
+		href="http://lists.ximian.com/mailman/listinfo/mono-winforms-list">mailing
+		list available</a>
+
+		<li><a href="http://www.go-mono.com/class-status-System.EnterpriseServices.html">EnterpriseServices</a>.
+
+		<li><a
+		href="http://www.go-mono.com/class-status-System.Runtime.Serialization.Formatters.Soap.html">System.Runtime.Serialization.Formatters.Soap</a>.
+
+		
+	</ul>
 
 * List of not-implemented classes
 

+ 45 - 13
web/contributing

@@ -1,18 +1,50 @@
 * Contributing to the Mono project
 
-	There are many ways in which you can help in the Mono project:
-
-	<ul>
-		* <b>Programmers:</b> You can work on a free
-		  implementation of the <a
-		  href="class-library.html">class libraries</a>, the
-		  <a href="runtime.html">runtime engine</a>, <a
-		  href="tools.html">the tools</a>, the <a
-		  href="testing.html">testing framework</a>
-
-		* <b>Writers:</b> You can help us bywriting <a
-		  href="documentation.html">documentation</a>.
-	</ul>
+	Mono has not been completed yet.  It is a project under
+	active development and with a vibrant community.  If you are
+	looking at ways of helping the project, you have come to the
+	right web page. 
+
+	There are three different philosophical approaches to helping
+	the Mono project, the selfish way, the altruistic or the
+	educational way.
+
+	The <b>selfish</b> way is packed with adventure.  You start by
+	building your own software, and start using the compiler and
+	tools that come with Mono.  Eventually you will run into
+	missing features, or a bug in the software.  Since we ship all
+	the source code for Mono, you can start tracking down the
+	problem.  Depending on how much time you have to devote to the
+	problem you could: <a href="http://bugzilla.ximian.com">File a
+	bug report</a>;  track down the problem and provide a better
+	<a href="http://bugzilla.ximian.com">bug report</a>;  fix the
+	bug and provide a patch (you can <a
+	href="mailto:[email protected]">post it</a> to the <a
+	href="http://lists.ximian.com/mailman/listinfo/mono-list">mono
+	mailing list</a>;  or discuss the solution on the mailing
+	list.   Ideally you will also write a <a
+	href="testing.html">regression test</a> so the bug does not
+	get re-introduced in the future. 
+
+	The <b>altruistic</b> is probably the easiest because you get
+	to pick a piece of Mono that you might want to work on.  You
+	can pick an unfinished <a href="class-library.html">class</a> (from our <a
+	href="class-status.html">class status page</a>); help with the
+	<a href="documentation.html">documentation effort</a> (<a
+	href="http://lists.ximian.com/mailman/listinfo/mono-docs-list">mailing
+	list for the documentation effort</a>); fix existing <a
+	href=http://bugzilla.ximian.com/buglist.cgi?product=Mono%2FClass+Libraries&product=Mono%2FRuntime&component=CORLIB&component=misc&component=System&component=System.Web&component=System.XML&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&changedin=&chfieldfrom=&chfieldto=Now&chfieldvalue=&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&keywords=&keywords_type=anywords&op_sys_details=&op_sys_details_type=substring&version_details=&version_details_type=substring&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time&form_name=query">runtime
+	bugs</a>; <a
+	href="http://bugzilla.ximian.com/buglist.cgi?product=Mono%2FMCS&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&changedin=&chfieldfrom=&chfieldto=Now&chfieldvalue=&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&keywords=&keywords_type=anywords&op_sys_details=&op_sys_details_type=substring&version_details=&version_details_type=substring&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time&form_name=query">compiler
+	bugs</a>; help with the <a href="tools.html">tools</a> or
+	writing <a href="testing.html">tests</a> that help make Mono
+	more robust or help with the <a
+	href="http://www.go-mono.com/winforms.html">Winforms
+	effort</a>.
+
+	The <b>educational</b> way is an interesting one, because you
+	pick a technology you are interested in, and work on that
+	technology to learn the technology.  
 
 	Those are just broad things that need to be worked on, but
 	something that would help tremendously would be to help with

+ 6 - 0
web/index

@@ -86,6 +86,12 @@
   </tr>
 </table>
 
+@item Nov 27th, 2002: Press release, tutorials
+
+http://www.ximian.com/about_us/press_center/press_releases/index.html?pr=openlink_mono
+
+	SWF progress.
+
 @item Nov 19th, 2002: Crypto update; Books; Gtk# Datagrid; .NET ONE Slides
 
 	Sebastien has got DSA and RSA signatures <a

+ 144 - 4
web/testing

@@ -9,13 +9,153 @@
 ** Class Library Tests
 
 	All classes in Mono libraries should have comprehensive unit test
-	suites to go with them. Unit testing is a software engineering
-  	methodology that makes it easier to build correct code. Every
+	suites to go with them.  Unit testing is a software engineering
+  	methodology that makes it easier to build correct code.  Every
   	method in every class should have a set of tests to verify
-  	that they work correctly. Mono also needs a testing framework
+  	that they work correctly.  Mono also needs a testing framework
 	to make it easy to write and run lots of tests. 
 
-	Try <a href="http://nunit.sourceforge.net">NUnit</a>
+
+** Getting started
+
+	If you are new to writing NUnit tests, there is a template you may use
+	to help get started. The file is:
+
+		<b>mcs/class/doc/TemplateTest.cs</b>
+
+	Save a copy of this file in the appropriate test subdirecty
+	(see below), and replace all the [text] markers with
+	appropriate code. Comments in the template are there to guide
+	you. You should also look at existing tests to see how other
+	people have written them.
+	mcs/class/corlib/Test/System.Collections/CollectionBaseTest.cs
+	is a small one that might help.
+
+	The directory that will contain your new file depends on the
+	assembly/namespace of the class for which you are creating the
+	tests.  Under mcs/class there is a directory for each
+	assembly. In each assembly there is a Test directory,
+	e.g. mcs/class/corlib/Test. In the Test directory there are
+	sub-directories for each namespace in the assembly,
+	e.g. mcs/class/corlib/Test/Sytem. Put your new test file in
+	the appropriate sub-directory under Test for the class you are
+	testing.
+	
+	Once your test class is complete, you need to add it to the
+	AllTests.cs file in the same directory as your new test. Add a
+	call to "suite.AddTest()" passing the name of your new test
+	class's suite property as the parameter.  You will see
+	examples in the AllTests.cs file, so just copy and paste
+	inside there.
+	
+	Once all of that is done, you can do a 'make test' from the top mcs
+	directory.  Your test class will be automagically included in the
+	build and the tests will be run along with all the others.
+
+* Tips on writing Unit tests.
+
+	You should look at the NUnit documentation, as it is a
+	fantastic product, and includes fantastic documentation, but
+	here are some tips for those of you who are already reading
+	this web page.
+
+
+** Provide an unique error message for Assert()
+
+	Include an unique message for each Assert() so that when the assert
+	fails, it is trivial to locate the failing one. Otherwise, it may be
+	difficult to determine which part of the test is failing. A good way
+	to ensure unique messages is to use something like #A01, #A02 etc.
+
+	    Ok:
+	<pre>
+	
+		AssertEquals("array match", compare[0], i1[0]);
+		AssertEquals("array match", compare[1], i1[1]);
+		AssertEquals("array match", compare[2], i1[2]);
+		AssertEquals("array match", compare[3], i1[3]);
+	</pre>
+
+	    Excellent:
+	<pre>
+		AssertEquals("#A01", compare[0], i1[0]);
+		AssertEquals("#A02", compare[1], i1[1]);
+		AssertEquals("#A03", compare[2], i1[2]);
+		AssertEquals("#A04", compare[3], i1[3]);
+	</pre>
+	
+	Once you used such a number in an Assert(), don't change it later on -
+	people might use it it identify the test in bug reports or in mailing
+	lists.
+
+** Use AssertEquals() to compare things, not Assert().
+
+	Do not compare two values with Assert() - if the test fails,
+	people have no idea what went wrong while AssertEquals()
+	reports the failed value.
+
+	Ok:
+	<pre>
+	        Assert ("A01", myTicks[0] == t1.Ticks);
+	</pre>
+
+	Excellent:
+	<pre>
+	        AssertEquals ("A01", myTicks[0], t1.Ticks);
+	</pre>
+
+** Constructors
+
+	When writing your testcase, please make sure to provide a constructor
+	which takes no arguments:
+
+	<pre>
+        public class DateTimeTest : TestCase
+        {
+
+                public DateTimeTest() : base ("[MonoTests.System.DateTimeTest]") {}
+                public DateTimeTest (string name): base(name) {}
+
+        	public static ITest Suite
+                {
+                        get {
+                                TestSuite suite = new TestSuite ();
+        			return suite;
+        		}
+        	}
+        }
+	</pre>
+
+** Namespace
+
+	Please keep the namespace within each test directory consistent - all
+	tests which are referenced in the same AllTests.cs must be in the same
+	namespace. Of course you can use subnamespaces as you like -
+	especially for subdirectories of your testsuite.
+	
+	For instance, if your AllTests.cs is in namespace "MonoTests" and you
+	have a subdirectory called "System", you can put all the tests in that
+	dir into namespace "MonoTests.System".
+	
+** Test your test with the Microsoft runtime
+	
+	If possible, try to run your testsuite with the Microsoft runtime on
+	Windows and make sure all tests in it pass. This is especially
+	important if you're writing a totally new testcase - without this
+	check you can never be sure that your testcase contains no bugs ....
+	
+	Don't worry if you're writing your test on Linux, other people can
+	test it for you on Windows.
+	
+	Sometimes you may discover that a test doesn't show the expected
+	result when run with the Microsoft runtime - either because there is a
+	bug in their runtime or something is misleading or wrong in their
+	documentation. In this case, please put a detailed description of the
+	problem to mcs/class/doc/API-notes and do also report it to the list -
+	we'll forward this to the Microsoft people from time to time to help
+	them fix their documentation and runtime.
+
+** Unit tets.
 
 	Why do unit testing? It becomes simple to run automated tests
 	for the whole library. Unit tests are a safety net - you can