<?xml version="1.0"?>

<!--
	description:

		"Test Suite"

	library: "Gobo Eiffel Developer Guidelines"
	copyright: "Copyright (c) 2004, Eric Bezault and others"
	license: "Eiffel Forum License v2 (see forum.txt)"
	date: "$Date: 2005/07/07 14:00:15 $"
	revision: "$Revision: 1.2 $"

-->

<chapter xmlns="http://www.gobosoft.com/eiffel/gobo/documentation" id="guidelines/test">
<chapterinfo>
	<copyright>
		<year>2001-2005</year>
		<holder>Eric Bezault</holder>
	</copyright>
	<author>
		<firstname>Eric</firstname><surname>Bezault</surname>
	</author>
	<email>ericb@gobosoft.com</email>
	<date>8 March 2005</date>
</chapterinfo>

<title>Test Suite</title>

<para>
Each Eiffel library should come with a test suite runnable with 
<emphasis>getest</emphasis>. The test case classes should be placed in
<filename>$GOBO/test/&lt;library-name&gt;</filename> along with the Ace files, 
loadpath files, ESD/Xace files and the <emphasis>getest</emphasis> configuration 
files to run the tests.
</para>

<para>
The purpose of these tests is to make sure that the library classes work as 
expected (i.e. as specified by the assertions) and also to make sure that they 
compile correctly with <link linkend="compilers">compilers</link> such as 
<ulink url="http://smarteiffel.loria.fr">SmartEiffel</ulink> which compiles only 
alive code.
</para>

<para>
These tests are also useful for library maintainers who have not access to all 
<link linkend="compilers">supported Eiffel compilers</link> or to some operating 
systems. That way the maintainers can ask others from the 
<projectname>Gobo</projectname> development team to run the tests on other
platforms or with other compilers for them.
</para>

<para>
Finally the <filename>$GOBO/test/&lt;library-name&gt;</filename> directory is 
used as regression test to make sure that no new bugs have been introduced 
between two releases.
</para>

<para>
Note: <emphasis>getest</emphasis> is based on Jim Weirich's 
<link linkend="../getest/see_also#eiffelunit"><projectname>EiffelUnit</projectname></link> 
tool but has the advantage to work with all 
<link linkend="compilers">Eiffel compilers</link> supported by the 
<projectname>Gobo Eiffel Project</projectname>.
</para>

</chapter>
