<?xml version="1.0"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You 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="test" basedir=".">

  <import file="../buildfiletest-base.xml"/>

  <path id="testclasses">
    <pathelement location="../../../../build/testcases" />
    <pathelement path="${java.class.path}" />
  </path>

  <mapper id="testmapper"
          classname="org.apache.tools.ant.taskdefs.MultiMapTest$TestMapper"
          classpathref="testclasses"/>

  <property name="map.ext" value=".copy2"/>
  <property name="rootScratchDir" value="${output}/test_multi_mapper_scratch_area"/>
  <property name="baseScratchSrc" value="${rootScratchDir}/src"/>
  <property name="baseScratchDest" value="${rootScratchDir}/dest"/>

  <target name="setUp">
    <delete dir="${baseScratchSrc}"/>
    <mkdir dir="${baseScratchSrc}"/>
    <delete dir="${baseScratchDest}"/>
    <mkdir dir="${baseScratchDest}"/>
    <touch file="${baseScratchSrc}/somefile.txt"/>
  </target>

  <!-- test simple single file to multiple file move -->
  <target name="multicopy" depends="setUp">
    <copy todir="${baseScratchDest}" enablemultiplemappings="true">
      <fileset dir="${baseScratchSrc}" includes="somefile.txt"/>
      <mapper refid="testmapper"/>
    </copy>
    <condition property="multicopy.outcome">
      <and>
        <available file="${baseScratchDest}/somefile.txt"/>
        <available file="${baseScratchDest}/somefile.txt${map.ext}"/>
      </and>
    </condition>
    <fail unless="multicopy.outcome">multicopy failed</fail>
  </target>

  <target name="multimove" depends="setUp">
    <move todir="${baseScratchDest}" enablemultiplemappings="true">
      <fileset dir="${baseScratchSrc}" includes="somefile.txt"/>
      <mapper refid="testmapper"/>
    </move>
    <condition property="test2.outcome">
      <and>
        <available file="${baseScratchDest}/somefile.txt"/>
        <available file="${baseScratchDest}/somefile.txt${map.ext}"/>
        <not>
          <available file="${baseScratchSrc}/somefile.txt"/>
        </not>
        <not>
          <available file="${baseScratchSrc}/somefile.txt${map.ext}"/>
        </not>
      </and>
    </condition>
    <fail unless="test2.outcome">mulitmove failed</fail>
  </target>
  
  <!-- 
       test traditional single file to single file copy explicitly telling
       task to ignore multiple mappings
       -->

  <target name="singlecopy" depends="setUp">
    <copy todir="${baseScratchDest}" enablemultiplemappings="false">
      <fileset dir="${baseScratchSrc}" includes="somefile.txt"/>
      <mapper refid="testmapper"/>
    </copy>
    <condition property="singlecopy.outcome">
      <and>
        <available file="${baseScratchDest}/somefile.txt"/>
        <not>
          <available file="${baseScratchDest}/somefile.txt${map.ext}"/>
        </not>
        <available file="${baseScratchSrc}/somefile.txt"/>
      </and>
    </condition>
    <fail unless="singlecopy.outcome">singlecopy failed</fail>
  </target>

  <target name="singlemove" depends="setUp">
    <move todir="${baseScratchDest}" enablemultiplemappings="false">
      <fileset dir="${baseScratchSrc}" includes="somefile.txt"/>
      <mapper refid="testmapper"/>
    </move>
    <condition property="singlemove.outcome">
      <and>
        <available file="${baseScratchDest}/somefile.txt"/>
        <not>
          <available file="${baseScratchDest}/somefile.txt${map.ext}"/>
        </not>
        <not>
          <available file="${baseScratchSrc}/somefile.txt"/>
        </not>
      </and>
    </condition>
    <fail unless="singlemove.outcome">singlemove failed</fail>
  </target>

  <!-- test dir w/ file + empty dir multimap copy -->
  <target name="copywithempty">
    <delete dir="${baseScratchSrc}"/>
    <mkdir dir="${baseScratchSrc}/dirwithfile"/>
    <mkdir dir="${baseScratchSrc}/emptydir"/>
    <touch file="${baseScratchSrc}/dirwithfile/somefile.txt"/>

    <delete dir="${baseScratchDest}"/>
    <mkdir dir="${baseScratchDest}"/>

    <copy todir="${baseScratchDest}" enablemultiplemappings="true">
      <fileset dir="${baseScratchSrc}" includes="**/*"/>
      <mapper refid="testmapper"/>
    </copy>
    <condition property="copywithempty.outcome">
      <and>
        <available file="${baseScratchDest}/dirwithfile"/>
        <available file="${baseScratchDest}/dirwithfile${map.ext}"/>
        <available file="${baseScratchDest}/dirwithfile/somefile.txt"/>
        <available file="${baseScratchDest}/dirwithfile/somefile.txt${map.ext}"/>
        <not>
          <available file="${baseScratchDest}/dirwithfile${map.ext}/somefile.txt"/>
        </not>
        <not>
          <available file="${baseScratchDest}/dirwithfile${map.ext}/somefile.txt${map.ext}"/>
        </not>
        <available file="${baseScratchDest}/emptydir"/>
        <available file="${baseScratchDest}/emptydir${map.ext}"/>
      </and>
    </condition>
    <fail unless="copywithempty.outcome">copywithempty failed</fail>
  </target>
  <!-- test dir w/ file + empty dir multimap move -->
  <target name="movewithempty">
    <delete dir="${baseScratchSrc}"/>
    <mkdir dir="${baseScratchSrc}/dirwithfile"/>
    <mkdir dir="${baseScratchSrc}/emptydir"/>
    <touch file="${baseScratchSrc}/dirwithfile/somefile.txt"/>

    <delete dir="${baseScratchDest}"/>
    <mkdir dir="${baseScratchDest}"/>

    <move todir="${baseScratchDest}" enablemultiplemappings="true">
      <fileset dir="${baseScratchSrc}" includes="**/*"/>
      <mapper refid="testmapper"/>
    </move>
    <condition property="movewithempty.outcome">
      <and>
        <available file="${baseScratchDest}/dirwithfile"/>
        <available file="${baseScratchDest}/dirwithfile${map.ext}"/>
        <available file="${baseScratchDest}/dirwithfile/somefile.txt"/>
        <available file="${baseScratchDest}/dirwithfile/somefile.txt${map.ext}"/>
        <not>
          <available file="${baseScratchDest}/dirwithfile${map.ext}/somefile.txt"/>
        </not>
        <not>
          <available file="${baseScratchDest}/dirwithfile${map.ext}/somefile.txt${map.ext}"/>
        </not>
        <available file="${baseScratchDest}/emptydir"/>
        <available file="${baseScratchDest}/emptydir${map.ext}"/>
        <not>
          <available file="${baseScratchSrc}/dirwithfile"/>
        </not>
        <not>
          <available file="${baseScratchSrc}/emptydir"/>
        </not>
      </and>
    </condition>
    <fail unless="movewithempty.outcome">movewithempty failed</fail>
  </target>


</project>
