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

  <typedef name="logical-ops" classname="org.apache.ant.props.LogicalOperationEvaluator" />
  <logical-ops id="logical-ops" />

  <propertyhelper>
    <delegate refid="logical-ops" />
    <props:nested />
  </propertyhelper>

  <target name="antunit">
    <antunit xmlns="antlib:org.apache.ant.antunit">
      <plainlistener />
      <file file="${ant.file}" xmlns="antlib:org.apache.tools.ant" />
    </antunit>
  </target>

  <target name="test-amp">
    <au:assertTrue>
      <istrue value="${true &amp; true}" />
    </au:assertTrue>
    <au:assertFalse>
      <istrue value="${false &amp; true}" />
    </au:assertFalse>
    <au:assertFalse>
      <istrue value="${false &amp; false}" />
    </au:assertFalse>
    <au:assertFalse>
      <istrue value="${true &amp; false}" />
    </au:assertFalse>
  </target>

  <target name="test-plus">
    <au:assertTrue>
      <istrue value="${true + true}" />
    </au:assertTrue>
    <au:assertFalse>
      <istrue value="${true + false}" />
    </au:assertFalse>
    <au:assertFalse>
      <istrue value="${false + false}" />
    </au:assertFalse>
    <au:assertFalse>
      <istrue value="${false + true}" />
    </au:assertFalse>
  </target>

  <target name="test-xor">
    <au:assertTrue>
      <istrue value="${true ^ false}" />
    </au:assertTrue>
    <au:assertTrue>
      <istrue value="${false ^ true}" />
    </au:assertTrue>
    <au:assertFalse>
      <istrue value="${true ^ true}" />
    </au:assertFalse>
    <au:assertFalse>
      <istrue value="${false ^ false}" />
    </au:assertFalse>
  </target>

  <target name="test-or">
    <au:assertTrue>
      <istrue value="${true | false}" />
    </au:assertTrue>
    <au:assertTrue>
      <istrue value="${true | true}" />
    </au:assertTrue>
    <au:assertTrue>
      <istrue value="${false | true}" />
    </au:assertTrue>
    <au:assertFalse>
      <istrue value="${false | false}" />
    </au:assertFalse>
  </target>

  <target name="test-multi-amp">
    <au:assertTrue>
      <istrue value="${true &amp; true &amp; true &amp; true}" />
    </au:assertTrue>
    <au:assertFalse>
      <istrue value="${false &amp; true &amp; true &amp; true}" />
    </au:assertFalse>
    <au:assertFalse>
      <istrue value="${true &amp; false &amp; true &amp; true}" />
    </au:assertFalse>
    <au:assertFalse>
      <istrue value="${true &amp; true &amp; false &amp; true}" />
    </au:assertFalse>
    <au:assertFalse>
      <istrue value="${true &amp; true &amp; true &amp; false}" />
    </au:assertFalse>
  </target>

  <target name="test-multi-plus">
    <au:assertTrue>
      <istrue value="${true + true + true + true}" />
    </au:assertTrue>
    <au:assertFalse>
      <istrue value="${false + true + true + true}" />
    </au:assertFalse>
    <au:assertFalse>
      <istrue value="${true + false + true + true}" />
    </au:assertFalse>
    <au:assertFalse>
      <istrue value="${true + true + false + true}" />
    </au:assertFalse>
    <au:assertFalse>
      <istrue value="${true + true + true + false}" />
    </au:assertFalse>
  </target>

  <target name="test-multi-xor">
    <au:assertFalse>
      <!-- true ^ false == true, ^ true == false, ^ false == false -->
      <istrue value="${true ^ false ^ true ^ false}" />
    </au:assertFalse>
    <au:assertTrue>
      <!-- true ^ false == true, ^ false == true, ^ false == true -->
      <istrue value="${true ^ false ^ false ^ false}" />
    </au:assertTrue>
    <au:assertTrue>
      <!-- false ^ true == true, ^ false == true, ^ false == true -->
      <istrue value="${false ^ true ^ false ^ false}" />
    </au:assertTrue>
    <au:assertFalse>
      <istrue value="${false ^ false ^ false ^ false}" />
    </au:assertFalse>
    <au:assertTrue>
      <istrue value="${false ^ false ^ false ^ true}" />
    </au:assertTrue>
    <au:assertTrue>
      <istrue value="${true ^ false ^ true ^ true}" />
    </au:assertTrue>
    <au:assertTrue>
      <istrue value="${true ^ true ^ true ^ true ^ true}" />
    </au:assertTrue>
  </target>

  <target name="test-multi-or">
    <au:assertTrue>
      <istrue value="${false | true | false | false}" />
    </au:assertTrue>
    <au:assertTrue>
      <istrue value="${true | false | false | false}" />
    </au:assertTrue>
    <au:assertTrue>
      <istrue value="${false | false | false | true}" />
    </au:assertTrue>
    <au:assertTrue>
      <istrue value="${false | false | true | false}" />
    </au:assertTrue>
    <au:assertTrue>
      <istrue value="${true | false | true | false}" />
    </au:assertTrue>
    <au:assertTrue>
      <istrue value="${true | true | true | false}" />
    </au:assertTrue>
    <au:assertTrue>
      <istrue value="${true | true | true | false}" />
    </au:assertTrue>
  </target>

  <target name="test-precedence">
    <au:assertTrue>
      <istrue value="${true | false + true}" />
    </au:assertTrue>
    <au:assertTrue>
      <istrue value="${true + false | true}" />
    </au:assertTrue>
    <au:assertTrue>
      <istrue value="${false + true ^ true | true + false}" />
    </au:assertTrue>
  </target>

  <target name="test-negation">
    <au:assertTrue>
      <istrue value="${!false}" />
    </au:assertTrue>
    <au:assertFalse>
      <istrue value="${!true}" />
    </au:assertFalse>
  </target>

  <target name="test-nested-negation">
    <propertyhelper>
      <props:stringops />
    </propertyhelper>
    <au:assertTrue>
      <istrue value="${!${foo:-false}}" />
    </au:assertTrue>
    <au:assertFalse>
      <istrue value="${!${foo:-true}}" />
    </au:assertFalse>
  </target>

</project>
