<?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.
-->
<antlib xmlns:au="antlib:org.apache.ant.antunit">
  <taskdef name="antunit"
    classname="org.apache.ant.antunit.AntUnit"/>

  <taskdef name="fail"
    classname="org.apache.ant.antunit.AssertTask"/>

  <taskdef name="expectfailure"
    classname="org.apache.ant.antunit.ExpectFailureTask"/>

  <typedef name="plainlistener"
    classname="org.apache.ant.antunit.listener.PlainAntUnitListener"/>

  <typedef name="xmllistener"
    classname="org.apache.ant.antunit.listener.XMLAntUnitListener"/>

  <typedef name="failurelistener"
    classname="org.apache.ant.antunit.listener.FailureAntUnitListener"/>

  <typedef name="logforwarder"
    classname="org.apache.ant.antunit.listener.LogForwarder"/>

  <typedef name="logcapturer"
           classname="org.apache.ant.antunit.LogCapturer"/>

  <typedef name="logcontains"
    classname="org.apache.ant.antunit.LogContains"/>

  <typedef name="logcontent"
    classname="org.apache.ant.antunit.LogContent" />

  <typedef name="resourceExists"
    classname="org.apache.ant.antunit.ResourceExists"/>

  <!-- Actually just an alias of fail that expects a condition -->
  <macrodef name="assertTrue" backtrace="false">
    <attribute name="message" default="Assertion failed"/>
    <element name="assertion" implicit="true"/>
    <sequential>
      <au:fail message="@{message}">
        <assertion/>
      </au:fail>
    </sequential>
  </macrodef>

  <macrodef name="assertFalse" backtrace="false">
    <attribute name="message" default="Assertion failed"/>
    <element name="assertion" implicit="true"/>
    <sequential>
      <au:fail message="@{message}">
        <not>
          <assertion/>
        </not>
      </au:fail>
    </sequential>
  </macrodef>

  <macrodef name="assertEquals" backtrace="false">
    <attribute name="expected"/>
    <attribute name="actual"/>
    <attribute name="casesensitive" default="true"/>
    <attribute name="message"
      default="Expected '@{expected}' but was '@{actual}'"/>
    <sequential>
      <au:fail message="@{message}">
        <equals arg1="@{expected}" arg2="@{actual}"
                  casesensitive="@{casesensitive}"/>
      </au:fail>
    </sequential>
  </macrodef>

  <macrodef name="assertPropertySet" backtrace="false">
    <attribute name="name"/>
    <attribute name="message"
      default="Expected property '@{name}'"/>
    <sequential>
      <au:fail message="@{message}">
        <isset property="@{name}"/>
      </au:fail>
    </sequential>
  </macrodef>

  <macrodef name="assertPropertyEquals" backtrace="false">
    <attribute name="name"/>
    <attribute name="value"/>
    <attribute name="casesensitive" default="true"/>
    <attribute name="message"
      default="Expected property '@{name}' to have value '@{value}' but was '${@{name}}'"/>
    <sequential>
      <au:assertPropertySet message="@{message}" name="@{name}"/>
      <au:assertEquals message="@{message}" expected="@{value}"
        actual="${@{name}}" casesensitive="@{casesensitive}"/>
    </sequential>
  </macrodef>

  <macrodef name="assertPropertyContains" backtrace="false">
    <attribute name="name"/>
    <attribute name="value"/>
    <attribute name="casesensitive" default="true"/>
    <attribute name="message"
               default="Expected property '@{name}' to contain value '@{value}' but was '${@{name}}'"/>
    <sequential>
      <au:assertPropertySet message="@{message}" name="@{name}"/>
      <au:fail message="@{message}">
        <contains string="${@{name}}" substring="@{value}"
                  casesensitive="@{casesensitive}"/>
      </au:fail>
    </sequential>
  </macrodef>
  
  <macrodef name="assertFileExists" backtrace="false">
    <attribute name="file"/>
    <attribute name="message"
      default="Expected file '@{file}' to exist"/>
    <sequential>
      <au:fail message="@{message}">
        <available file="@{file}"/>
      </au:fail>
    </sequential>
  </macrodef>

  <macrodef name="assertFileDoesntExist" backtrace="false">
    <attribute name="file"/>
    <attribute name="message"
      default="Didn't expect file '@{file}' to exist"/>
    <sequential>
      <au:assertFalse message="@{message}">
        <available file="@{file}"/>
      </au:assertFalse>
    </sequential>
  </macrodef>

  <macrodef name="assertResourceExists" backtrace="false">
    <attribute name="resource"/>
    <attribute name="message"
      default="Expected resource '@{resource}' to exist"/>
    <sequential>
      <au:fail message="@{message}">
        <au:resourceExists resource="@{resource}"/>
      </au:fail>
    </sequential>
  </macrodef>

  <macrodef name="assertResourceDoesntExist" backtrace="false">
    <attribute name="resource"/>
    <attribute name="message"
      default="Didn't expect resource '@{resource}' to exist"/>
    <sequential>
      <au:assertFalse message="@{message}">
        <au:resourceExists resource="@{resource}"/>
      </au:assertFalse>
    </sequential>
  </macrodef>

  <macrodef name="assertResourceContains">
    <attribute name="resource"/>
    <attribute name="value"/>
    <attribute name="casesensitive" default="true"/>
    <attribute name="message"
	       default="Expected resource '@{resource}' to contain value '@{value}' but was '${@{resource}}'"/>
    <sequential>
      <au:assertResourceExists resource="@{resource}"/>
      <au:fail message="@{message}">
	<resourcecontains resource="@{resource}" substring="@{value}"
                          casesensitive="@{casesensitive}"/>
      </au:fail>
    </sequential>
  </macrodef>

  <macrodef name="assertResourceDoesntContain">
    <attribute name="resource"/>
    <attribute name="value"/>
    <attribute name="casesensitive" default="true"/>
    <attribute name="message"
	       default="Didn't expect resource '@{resource}' to contain value '@{value}' but was '${@{resource}}'"/>
    <sequential>
      <au:assertFalse message="@{message}">
	<resourcecontains resource="@{resource}" substring="@{value}"
                          casesensitive="@{casesensitive}"/>
      </au:assertFalse>
    </sequential>
  </macrodef>

  <macrodef name="assertNestedResourceExists" backtrace="false">
    <attribute name="message" default="Expected resource to exist"/>
    <element name="nested-resource" implicit="true"/>
    <sequential>
      <au:fail message="@{message}">
        <au:resourceExists>
          <nested-resource/>
        </au:resourceExists>
      </au:fail>
    </sequential>
  </macrodef>

  <macrodef name="assertNestedResourceDoesntExist" backtrace="false">
    <attribute name="message" default="Didn't expect resource to exist"/>
    <element name="nested-resource" implicit="true"/>
    <sequential>
      <au:assertFalse message="@{message}">
        <au:resourceExists>
          <nested-resource/>
        </au:resourceExists>
      </au:assertFalse>
    </sequential>
  </macrodef>

  <macrodef name="assertRefResourceExists" backtrace="false">
    <attribute name="refid"/>
    <attribute name="message"
               default="Expected resource '@{refid}' to exist"/>
    <sequential>
      <au:fail message="@{message}">
        <au:resourceExists refid="@{refid}"/>
      </au:fail>
    </sequential>
  </macrodef>

  <macrodef name="assertRefResourceDoesntExist" backtrace="false">
    <attribute name="refid"/>
    <attribute name="message"
               default="Didn't expect resource '@{refid}' to exist"/>
    <sequential>
      <au:assertFalse message="@{message}">
        <au:resourceExists refid="@{refid}"/>
      </au:assertFalse>
    </sequential>
  </macrodef>

  <macrodef name="assertRefResourceContains">
    <attribute name="refid"/>
    <attribute name="value"/>
    <attribute name="casesensitive" default="true"/>
    <attribute name="message"
	       default="Expected resource '@{refid}' to contain value '@{value}'"/>
    <sequential>
      <au:assertRefResourceExists refid="@{refid}"/>
      <au:fail message="@{message}">
	<resourcecontains refid="@{refid}" substring="@{value}"
                          casesensitive="@{casesensitive}"/>
      </au:fail>
    </sequential>
  </macrodef>

  <macrodef name="assertRefResourceDoesntContain">
    <attribute name="refid"/>
    <attribute name="value"/>
    <attribute name="casesensitive" default="true"/>
    <attribute name="message"
	       default="Didn't expect resource '@{refid}' to contain value '@{value}'"/>
    <sequential>
      <au:assertFalse message="@{message}">
	<resourcecontains refid="@{refid}" substring="@{value}"
                          casesensitive="@{casesensitive}"/>
      </au:assertFalse>
    </sequential>
  </macrodef>

  <macrodef name="assertDestIsUptodate" backtrace="false">
    <attribute name="src"/>
    <attribute name="dest"/>
    <attribute name="message"
      default="Expected '@{dest}' to be more recent than '@{src}'"/>
    <sequential>
      <au:fail message="@{message}">
        <uptodate srcfile="@{src}" targetfile="@{dest}"/>
      </au:fail>
    </sequential>
  </macrodef>

  <macrodef name="assertDestIsOutofdate" backtrace="false">
    <attribute name="src"/>
    <attribute name="dest"/>
    <attribute name="message"
      default="Expected '@{src}' to be more recent than '@{dest}'"/>
    <sequential>
      <au:assertFalse message="@{message}">
        <uptodate srcfile="@{src}" targetfile="@{dest}"/>
      </au:assertFalse>
    </sequential>
  </macrodef>

  <macrodef name="assertFilesMatch" backtrace="false">
    <attribute name="expected"/>
    <attribute name="actual"/>
    <attribute name="message"
      default="Expected files '@{expected}' and '@{actual}' to match"/>
    <sequential>
      <au:fail message="@{message}">
        <filesmatch file1="@{expected}" file2="@{actual}"/>
      </au:fail>
    </sequential>
  </macrodef>

  <macrodef name="assertFilesDiffer" backtrace="false">
    <attribute name="expected"/>
    <attribute name="actual"/>
    <attribute name="message"
      default="Expected files '@{expected}' and '@{actual}' to differ"/>
    <sequential>
      <au:assertFalse message="@{message}">
        <filesmatch file1="@{expected}" file2="@{actual}"/>
      </au:assertFalse>
    </sequential>
  </macrodef>

  <macrodef name="assertReferenceSet" backtrace="false">
    <attribute name="refid"/>
    <attribute name="message"
      default="Expected reference '@{refid}'"/>
    <sequential>
      <au:fail message="@{message}">
        <isreference refid="@{refid}"/>
      </au:fail>
    </sequential>
  </macrodef>

  <macrodef name="assertReferenceIsType" backtrace="false">
    <attribute name="refid"/>
    <attribute name="type"/>
    <attribute name="message"
      default="Expected reference '@{refid}' to be a '@{type}'"/>
    <sequential>
      <au:assertReferenceSet refid="@{refid}"/>
      <au:fail message="@{message}">
        <isreference refid="@{refid}" type="@{type}"/>
      </au:fail>
    </sequential>
  </macrodef>

  <macrodef name="assertLogContains" backtrace="false">
    <attribute name="text"/>
    <attribute name="level" default="info"/>
    <attribute name="mergeLines" default="true"/>
    <attribute name="message"
      default="Expected log to contain '@{text}' at level @{level}"/>
    <sequential>
      <au:fail message="@{message}">
        <au:logcontains text="@{text}" level="@{level}"
                        mergeLines="@{mergeLines}"/>
      </au:fail>
    </sequential>
  </macrodef>

  <macrodef name="assertLogDoesntContain" backtrace="false">
    <attribute name="text"/>
    <attribute name="level" default="info"/>
    <attribute name="mergeLines" default="true"/>
    <attribute name="message"
      default="Unexpected log '@{text}' at level @{level}"/>
    <sequential>
      <au:assertFalse message="@{message}">
        <au:logcontains text="@{text}" level="@{level}"
                        mergeLines="@{mergeLines}"/>
      </au:assertFalse>
    </sequential>
  </macrodef>

  <macrodef name="assertMatches" backtrace="false">
    <attribute name="string"/>
    <attribute name="pattern"/>
    <attribute name="casesensitive" default="true"/>
    <attribute name="singleline" default="false"/>
    <attribute name="multiline" default="false"/>
    <attribute name="message"
      default="Expected '@{string}' to match pattern '@{pattern}'"/>
    <sequential>
      <au:fail message="@{message}">
	<matches string="@{string}" pattern="@{pattern}"
                 casesensitive="@{casesensitive}"
                 singleline="@{singleline}"
                 multiline="@{multiline}"/>
      </au:fail>
    </sequential>
  </macrodef>

  <macrodef name="assertDoesntMatch" backtrace="false">
    <attribute name="string"/>
    <attribute name="pattern"/>
    <attribute name="casesensitive" default="true"/>
    <attribute name="singleline" default="false"/>
    <attribute name="multiline" default="false"/>
    <attribute name="message"
      default="Expected '@{string}' to not match pattern '@{pattern}'"/>
    <sequential>
      <au:fail message="@{message}">
        <not>
          <matches string="@{string}" pattern="@{pattern}"
                   casesensitive="@{casesensitive}"
                   singleline="@{singleline}"
                   multiline="@{multiline}"/>
        </not>
      </au:fail>
    </sequential>
  </macrodef>

</antlib>
