<?xml version="1.0" encoding="utf-8"?>
<!--
  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="testantversion" default="testatleast">

        <target name="testatleast">
                <fail>
                        <condition>
                                <not>
                                        <antversion atleast="1.7" />
                                </not>
                        </condition>
                Should be at least 1.7
        </fail>
        </target>

        <target name="testexactly">
                <fail>
                        <condition>
                                <not>
                                        <antversion exactly="1.9.15" />
                                </not>
                        </condition>
                        Should be exactly 1.9.15

                </fail>
        </target>

        <target name="testatleastfail">
                <property name="version" value="1.8.9" />
                <fail>
                        <condition>
                                <not>
                                        <antversion atleast="1.9.15" />
                                </not>
                        </condition>
                Should be at least 1.9.15
                </fail>
        </target>

        <target name="testexactlyfail">
                <property name="version" value="1.8.0" />
                <fail>
                        <condition>
                                <not>
                                        <antversion exactly="1.9.15" />
                                </not>
                        </condition>
                  Should be exactly 1.9.15
                </fail>
        </target>
</project>
