<!--
	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">
	
	<!-- Mocking required phase --> 
	<phase name="validate"/>
		
	<!-- Import your plugin -->	
	<import file="../../main/resources/@project.module@.ant"/>
	
	<!-- 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"/>
	
	<!-- init test case --> 		
	<target name="testInit">
		<antcall target=":init"/>
		<au:assertLogContains level="debug" text="This is the init target of @project.module@"/>
	</target>
	
	<!--
		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>