<?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="testproject" default="def" basedir=".">

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

  <target name="def">
    <fail>This build-file is intended to be run from the test cases</fail>
  </target>

  <target name="setup1">
    <script language="javascript">
      <![CDATA[
      for (i=1; i<=10; i++) {
        echo = testproject.createTask("echo");
        setup1.addTask(echo);
        echo.setMessage(i*i);
      }
      ]]>
    </script>
  </target>

  <target name="example1" depends="setup1"/>

  <target name="useBeanshell">
    <script language="beanshell"><![CDATA[
       self.log("I'm here", org.apache.tools.ant.Project.MSG_INFO);
    ]]></script>
  </target>

  <target name="useSrcAndEncoding">
    <mkdir dir="${output}"/>
    <property name="useSrcAndEncoding.encoding" value="UTF-8"/>
    <property name="useSrcAndEncoding.reader.encoding" value="${useSrcAndEncoding.encoding}"
              description="Set a different encoding to raise a failure (ex. ISO-8859-1)"/>
    <property name="useSrcAndEncoding.file" location="${output}/script.useSrcAndEncoding.js"/>
    <property name="useSrcAndEncoding.expectedProp" value="eacute [&#233;]"/>

    <echo file="${useSrcAndEncoding.file}" encoding="${useSrcAndEncoding.encoding}"
          message="project.setNewProperty('useSrcAndEncoding.prop', '${useSrcAndEncoding.expectedProp}');"/>

    <script language="javascript" src="${useSrcAndEncoding.file}" encoding="${useSrcAndEncoding.reader.encoding}"/>
    <condition property="useSrcAndEncoding.testOK" >
      <equals arg1="${useSrcAndEncoding.expectedProp}" arg2="${useSrcAndEncoding.prop}"/>
    </condition>
    <fail message="expected &lt;${useSrcAndEncoding.expectedProp}&gt; but was &lt;${useSrcAndEncoding.prop}&gt;" unless="useSrcAndEncoding.testOK"/>
  </target>

</project>