<?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="reference-regex-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="testReferenceRegex">
      <property name="ref.one" refid="first.ref"/>
      <au:assertTrue>
        <contains substring="${file.separator}first" string="${ref.one}"/>
      </au:assertTrue>

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

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

</project>