<?xml version="1.0" encoding="utf-8"?>
<!--
    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 default="antunit"
         xmlns:au="antlib:org.apache.ant.antunit"
         xmlns:cond="antlib:org.apache.tools.ant.types.conditions"
         xmlns:cmp="antlib:org.apache.ant.compress">

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

  <target name="setUp">
    <mkdir dir="${output}" />
    <mkdir dir="${output}/empty" />
    <touch file="${output}/fileone" />
    <touch file="${output}/filetwo" />
  </target>

  <target name="testFailNone" depends="setUp">
    <au:expectfailure expectedmessage="source is required.">
      <cmp:bzip2 destfile="${output}/file.bz2">
        <fileset dir="${output}/empty" />
      </cmp:bzip2>
    </au:expectfailure>
  </target>

  <target name="testFailTwo" depends="setUp">
    <au:expectfailure expectedmessage="Can only have one source.">
      <cmp:bzip2 destfile="${output}/file.bz2">
        <fileset dir="${output}" />
      </cmp:bzip2>
    </au:expectfailure>
  </target>

  <target name="testFailNoDest" depends="setUp">
    <au:expectfailure expectedmessage="dest resource is required.">
      <cmp:bzip2 src="${output}/fileone">
        <dest>
          <fileset dir="${output}/empty" />
        </dest>
      </cmp:bzip2>
    </au:expectfailure>
  </target>

  <target name="testFailTwoDests" depends="setUp">
    <au:expectfailure expectedmessage="Can only have one destination resource.">
      <cmp:bzip2 src="${output}/fileone">
        <dest>
          <fileset dir="${output}" />
        </dest>
      </cmp:bzip2>
    </au:expectfailure>
  </target>

  <target name="testRealTest" depends="setUp">
    <cmp:bzip2 src="../resources/asf-logo.gif"
              destfile="${output}/asf-logo.gif.bz2" />
    <au:assertLogContains text="Building: asf-logo.gif.bz2"/>
    <au:assertFileExists file="${output}/asf-logo.gif.bz2"/>
  </target>

  <target name="testRealTestWithResource" depends="setUp">
    <cmp:bzip2 destfile="${output}/asf-logo.gif.bz2">
      <file file="../resources/asf-logo.gif"/>
    </cmp:bzip2>
    <au:assertLogContains text="Building: asf-logo.gif.bz2"/>
    <au:assertFileExists file="${output}/asf-logo.gif.bz2"/>
  </target>

  <target name="testDateCheck" depends="setUp">
    <touch file="${output}/asf-logo.gif.bz2"/>
    <cmp:bzip2 src="../resources/asf-logo.gif"
              destfile="${output}/asf-logo.gif.bz2" />
    <au:assertLogContains text="Nothing to do: asf-logo.gif.bz2 is up to date."/>
  </target>

  <target name="testHugeFile" depends="setUp">
    <bunzip2 src="../resources/asf-logo-huge.tar.bz2"
             dest="${output}/asf-logo-huge.tar"/>
    <cmp:bzip2 src="${output}/asf-logo-huge.tar"
              destfile="${output}/asf-logo-huge.tar.bz2" />
    <au:assertLogContains text="Building: asf-logo-huge.tar.bz2"/>
    <au:assertFileExists file="${output}/asf-logo-huge.tar.bz2"/>
  </target>

  <target name="testNestedTask" depends="setUp">
    <cmp:bzip2 destfile="${output}/asf-logo.tar.bz2">
      <cmp:tar>
        <cmp:cpiofileset src="../resources/asf-logo.gif.bin.cpio"
                         includes="asf-logo.gif"/>
      </cmp:tar>
    </cmp:bzip2>
    <au:assertFileExists file="${output}/asf-logo.tar.bz2"/>
    <au:assertTrue>
      <cond:islastmodified datetime="2009-07-31-20:11:13 +0200"
                           pattern="yyyy-MM-dd-HH:mm:ss Z">
        <cmp:tarentry name="asf-logo.gif">
          <bzip2resource>
            <file file="${output}/asf-logo.tar.bz2"/>
          </bzip2resource>
        </cmp:tarentry>
      </cond:islastmodified>
    </au:assertTrue>
  </target>

</project>
