<?xml version="1.0"?>
<project basedir=".">

<!-- apt tests -->

<property name="build.dir" location="aptbuild" />
<property name="classes.dir" location="${build.dir}/classes" />
<property name="classes2.dir" location="${build.dir}/classes2" />
<property name="preprocess.dir" location="${build.dir}/source" />
<property name="src" location="apt" />

<property name="AptExample.class" location="${classes.dir}/AptExample.class" />

<macrodef name="assertCompiled">
  <attribute name="file" />
  <sequential >
    <fail  message="not found: @{file}">
      <condition>
        <not>
          <available file="@{file}" />
        </not>
      </condition>
    </fail>
  </sequential>
</macrodef>

<presetdef name="assertAptExampleCompiled">
  <assertCompiled file="${AptExample.class}"/>
</presetdef>

<target name="clean">
  <delete dir="${build.dir}"/>
</target>

<target name="init">
  <mkdir dir="${classes.dir}"/>
  <mkdir dir="${classes2.dir}"/>
  <mkdir dir="${preprocess.dir}"/>
</target>

<target name="testApt" depends="init">
  <apt srcdir="${src}"
       destdir="${classes.dir}"
       debug="on"
       compile="true"
       preprocessdir="${preprocess.dir}">
  </apt>
  <assertAptExampleCompiled />
</target>

<target name="testAptFork" depends="init">
  <apt srcdir="${src}"
       destdir="${classes.dir}"
       debug="on"
       compile="true"
       fork="true"
       preprocessdir="${preprocess.dir}">
  </apt>
  <assertAptExampleCompiled />
</target>


<target name="testAptForkFalse" depends="init">
  <apt srcdir="${src}"
       destdir="${classes.dir}"
       debug="on"
       compile="true"
       fork="false"
       preprocessdir="${preprocess.dir}">
  </apt>
  <assertAptExampleCompiled />
</target>

<target name="testListAnnotationTypes" depends="init">
  <apt srcdir="${src}"
       destdir="${classes.dir}"
       debug="on"
       compile="true"
       preprocessdir="${preprocess.dir}">
       <compilerarg value="-XListAnnotationTypes" />
       <compilerarg value="-Xlint:deprecation" /> 
  </apt>
  
  <assertAptExampleCompiled />
</target>


<!-- use the factory we compiled. To avoid trouble
  we deliver into a version in a new classpath, otherwise
  the dependency logic will not run Apt-->
<target name="testAptNewFactory" depends="testApt">
  <apt srcdir="${src}"
       destdir="${classes2.dir}"
       debug="on"
       compile="true"
       factory="DistributedAnnotationFactory"
       preprocessdir="${preprocess.dir}">
       <factorypath path="${classes.dir}" />
       <option name="build.dir" value="${build.dir}" />
  </apt>
  <assertAptExampleCompiled />
</target>

<target name="testAptNewFactoryFork" depends="testApt">
  <apt srcdir="${src}"
       destdir="${classes2.dir}"
       debug="on"
       compile="true"
       fork="true"
       factory="DistributedAnnotationFactory"
       preprocessdir="${preprocess.dir}">
       <factorypath path="${classes.dir}" />
       <option name="build.dir" value="${build.dir}" />
  </apt>
  <assertAptExampleCompiled />
</target>




</project>
