<?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="reference-set-test" basedir="." default="all"
  xmlns:au="antlib:org.apache.ant.antunit">

  <target name="all">
    <fail>Not a self-contained build file</fail>
  </target>

  <target name="testReferenceSet">
    <property name="ref.one" refid="first.ref"/>
    <au:assertTrue>
      <contains substring="${file.separator}first" string="${ref.one}"/>
    </au:assertTrue>

    <property name="ref.three" refid="third.ref"/>
    <au:assertTrue>
      <contains substring="${file.separator}third" string="${ref.three}"/>
    </au:assertTrue>

    <condition property="uninherited.is.set" value="true">
      <isreference refid="second.ref"/>
    </condition>
    <fail message="Uninherited reference should not be visible" if="uninherited.is.set"/>
  </target>

</project>