<?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

      https://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 default="antunit" xmlns:au="antlib:org.apache.ant.antunit">
  <import file="../antunit-base.xml" />

  <target name="testChecksumConditionWithFileSet">
    <mkdir dir="${output}"/>
    <checksum todir="${output}">
      <fileset dir="."/>
    </checksum>
    <condition property="checksumsMatch">
      <checksum todir="${output}">
        <fileset dir="."/>
      </checksum>
    </condition>
    <au:assertPropertySet name="checksumsMatch"/>
  </target>

  <target name="testTotalPropertyAcrossPlatforms"
          description="testcase for
          https://issues.apache.org/bugzilla/show_bug.cgi?id=36748">
    <mkdir dir="${input}"/>
    <echo file="${input}/a.txt">abc</echo>
    <echo file="${input}/subdir/A.txt">def</echo>
    <echo file="${input}/B.txt">xyz</echo>
    <checksum totalproperty="total">
      <fileset dir="${input}"/>
    </checksum>
    <au:assertPropertyEquals name="total"
                             value="f4d688789d32e6ca6bc93c504dbc6b46"/>
  </target>

  <target name="testChecksumPattern2">
    <mkdir dir="${output}"/>
    <mkdir dir="${input}"/>
    <echo file="${input}/a.txt">abc</echo>
    <checksum todir="${output}" pattern="{2}">
      <fileset dir="${input}"/>
    </checksum>
    <au:assertResourceContains
        resource="${output}/a.txt.MD5"
        value="../testinput/a.txt"/>
  </target>

  <target name="testChecksumPattern3">
    <mkdir dir="${output}"/>
    <checksum todir="${output}" pattern="{3}">
      <fileset dir=".." includes="types/fileset-test.xml"/>
    </checksum>
    <au:assertResourceContains
        resource="${output}/types/fileset-test.xml.MD5"
        value="../types/fileset-test.xml"/>
  </target>

  <target name="testChecksumPattern4">
    <mkdir dir="${output}"/>
    <mkdir dir="${input}"/>
    <property name="a" location="${input}/a.txt"/>
    <echo file="${a}">abc</echo>
    <checksum todir="${output}" pattern="{4}">
      <fileset dir="${input}"/>
    </checksum>
    <au:assertResourceContains
        resource="${output}/a.txt.MD5"
        value="${a}"/>
  </target>

</project>
