<?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 name="length-test" default="antunit"
         xmlns:au="antlib:org.apache.ant.antunit">

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

  <property name="dir.a" location="${input}/a" />
  <property name="dir.b" location="${input}/b" />
  <property name="zipfile" location="${output}/lengthtest.zip" />

  <target name="setUp">
    <mkdir dir="${output}" />
    <mkdir dir="${dir.a}" />
    <mkdir dir="${dir.b}" />
    <property name="foo" location="${dir.a}/foo" />
    <property name="bar" location="${dir.b}/bar" />
    <echo file="${foo}" message="foo" />
    <echo file="${bar}" message="bar" />
  </target>

  <target name="testEach" depends="setUp">
    <length mode="each" property="length.each">
      <fileset id="fs" dir="${input}" />
    </length>
    <length string="${length.each}" property="length.length.each" />
    <length string="${foo}${bar}........${line.separator}"
            property="length.expected" />

    <au:assertTrue>
      <!-- test that both files are represented, and that the
           output is the expected length; do not assume order. -->
      <and>
        <contains string="${length.each}" substring="${foo} : 3" />
        <contains string="${length.each}" substring="${bar} : 3" />
        <equals arg1="${length.length.each}" arg2="${length.expected}" />
      </and>
    </au:assertTrue>
  </target>

  <target name="testEachCondition" depends="setUp">
    <length mode="each" property="length.each">
      <fileset id="fs" dir="${input}" />
    </length>
    <length string="${foo}${bar}........${line.separator}"
            property="length.expected" />
    <au:assertTrue>
      <!-- test that both files are represented, and that the
           output is the expected length; do not assume order. -->
      <and>
        <contains string="${length.each}" substring="${foo} : 3" />
        <contains string="${length.each}" substring="${bar} : 3" />
        <length string="${length.each}" length="${length.expected}" />
      </and>
    </au:assertTrue>
  </target>

  <target name="testAll" depends="setUp">
    <length property="length.all">
      <fileset id="foo" file="${dir.a}/foo" />
      <fileset id="bar" file="${dir.b}/bar" />
    </length>
    <au:assertTrue>
      <equals arg1="6" arg2="${length.all}" />
    </au:assertTrue>
  </target>

  <target name="testAllCondition" depends="setUp">
    <au:assertTrue>
      <length length="6">
        <fileset id="foo" file="${dir.a}/foo" />
        <fileset id="bar" file="${dir.b}/bar" />
      </length>
    </au:assertTrue>
  </target>

  <target name="testFile" depends="setUp">
    <length property="length.foo" file="${dir.a}/foo" />
    <au:assertTrue>
      <equals arg1="3" arg2="${length.foo}" />
    </au:assertTrue>
  </target>

  <target name="testFileCondition" depends="setUp">
    <au:assertTrue>
      <length length="3" file="${dir.a}/foo" />
    </au:assertTrue>
  </target>

  <target name="testBoth" depends="setUp">
    <length property="length.foo" file="${dir.a}/foo">
      <fileset file="${dir.b}/bar" />
    </length>
    <au:assertTrue>
      <equals arg1="6" arg2="${length.foo}" />
    </au:assertTrue>
  </target>

  <target name="testBothCondition" depends="setUp">
    <au:assertTrue>
      <length length="6" file="${dir.a}/foo">
        <fileset file="${dir.b}/bar" />
      </length>
    </au:assertTrue>
  </target>

  <target name="testDupes" depends="setUp">
    <length property="length.foo" file="${dir.a}/foo">
      <fileset dir="${input}" />
    </length>
    <au:assertTrue>
      <equals arg1="9" arg2="${length.foo}" />
    </au:assertTrue>
  </target>

  <target name="testDupesCondition" depends="setUp">
    <au:assertTrue>
      <length length="9" file="${dir.a}/foo">
        <fileset dir="${input}" />
      </length>
    </au:assertTrue>
  </target>

  <target name="testString">
    <length string="foo" property="length.string" />
    <au:assertTrue>
      <equals arg1="3" arg2="${length.string}" />
    </au:assertTrue>
  </target>

  <target name="testStringCondition">
    <au:assertTrue>
      <length string="foo" length="3" />
    </au:assertTrue>
  </target>

  <target name="testTrimString">
    <length string=" foo " trim="true" property="length.string" />
    <au:assertTrue>
      <equals arg1="3" arg2="${length.string}" />
    </au:assertTrue>
  </target>

  <target name="testTrimStringCondition">
    <au:assertTrue>
      <length string=" foo " trim="true" length="3" />
    </au:assertTrue>
  </target>

  <target name="testNoTrimString">
    <length string=" foo " property="length.string" />
    <au:assertTrue>
      <equals arg1="5" arg2="${length.string}" />
    </au:assertTrue>
  </target>

  <target name="testNoTrimStringCondition">
    <au:assertTrue>
      <length string=" foo " length="5" />
    </au:assertTrue>
  </target>

  <target name="testTrimFile" description="should fail">
    <au:expectfailure>
      <length file="${ant.file}" trim="false" />
    </au:expectfailure>
  </target>

  <target name="testStringFile" description="should fail">
    <au:expectfailure>
      <length string="foo" file="${ant.file}" />
    </au:expectfailure>
  </target>

  <target name="testImmutable">
    <length string="foo" property="length.string" />
    <length string="foobar" property="length.string" />
    <au:assertTrue>
      <equals arg1="3" arg2="${length.string}" />
    </au:assertTrue>
  </target>

  <target name="zip" depends="setUp">
    <zip destfile="${zipfile}">
      <fileset file="${foo}" />
      <fileset file="${bar}" />
    </zip>
  </target>

  <target name="testZipFileSet" depends="zip">
    <length property="length.zipfile1">
      <zipfileset src="${zipfile}" />
    </length>
    <length property="length.zipfile2">
      <zipfileset src="${zipfile}" includes="bar" />
    </length>
    <au:assertTrue>
      <and>
        <equals arg1="6" arg2="${length.zipfile1}" />
        <equals arg1="3" arg2="${length.zipfile2}" />
      </and>
    </au:assertTrue>
  </target>

  <target name="testZipFileSetCondition" depends="zip">
    <au:assertTrue>
      <and>
        <length length="6">
          <zipfileset src="${zipfile}" />
        </length>
        <length length="3">
          <zipfileset src="${zipfile}" includes="bar" />
        </length>
      </and>
    </au:assertTrue>
  </target>

  <target name="testResourceAttribute">
    <string id="s" value="foo-bar-baz" />
    <au:assertTrue>
      <length length="11" resource="${ant.refid:s}" />
    </au:assertTrue>
  </target>

</project>
