<!--
	Copyright 2008-2009 the EasyAnt project
	
	See the NOTICE file distributed with this work for additional information 
	regarding copyright ownership.
	
	Licensed under the Apache License, Version 2.0 (the "License");
	you may not use this file except in compliance with the License.
	You may obtain a copy of the License at
	
	http://www.apache.org/licenses/LICENSE-2.0
	
	Unless required by applicable law or agreed to in writing, software
	distributed under the License is distributed on an "AS IS" BASIS,
	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
	See the License for the specific language governing permissions and
	limitations under the License.
-->
<project name="@project.organisation@;@project.module@-test" xmlns:au="antlib:org.apache.ant.antunit">
	
	<!-- Defines a setUp / tearDown (before each test) that cleans the environnement --> 
	<target name="clean" description="remove stale build artifacts before / after each test">
		<delete dir="${basedir}" includeemptydirs="true">
			<include name="**/target/**"/>
			<include name="**/lib/**"/>
		</delete>
	</target>
	
	<target name="setUp" depends="clean"/>
	<target name="tearDown" depends="clean"/>
	
	<!--
		A sample ant unit test case, 
		see the antunit official documentation for more informations
		
		<target name="testSample" description="a sample of ant unit test case">
			<au:assertTrue>
				<matches string="abc" pattern="abc"/>
			</au:assertTrue>
		</target>
	-->

</project>
