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

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

  <target name="testnested">
    <macrodef name="root-macro">
      <element name="sub-tasks" optional="false" />

      <sequential>
        <!-- do stuff -->
        <sub-tasks />
      </sequential>
    </macrodef>

    <macrodef name="used-macro-a">
      <element name="a-sub-tasks" optional="false" implicit="true" />

      <sequential>
        <root-macro>
          <sub-tasks>
            <!-- do stuff -->
            <a-sub-tasks />
          </sub-tasks>
        </root-macro>
      </sequential>
    </macrodef>

    <macrodef name="used-macro-b">
      <element name="b-sub-tasks" optional="false" implicit="true" />

      <sequential>
        <used-macro-a>
          <root-macro>
            <sub-tasks>
              <!-- do stuff -->
              <b-sub-tasks />
            </sub-tasks>
          </root-macro>
        </used-macro-a>
      </sequential>
    </macrodef>

    <used-macro-b>
      <echo message="Test B" />
    </used-macro-b>

    <au:assertLogContains text="Test B"/>
  </target>

</project>
