<?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="echo-test" default="antunit" xmlns:au="antlib:org.apache.ant.antunit">
  <import file="../antunit-base.xml" />

  <target name="setUp">
    <mkdir dir="${output}" />
  </target>

  <target name="test1">
    <echo/>
    <au:assertTrue>
      <length length="0">
        <au:logcontent />
      </length>
    </au:assertTrue>
  </target>

  <target name="test2">
    <echo message="OUTPUT OF ECHO"/>
    <au:assertLogContains text="OUTPUT OF ECHO" />
  </target>

  <target name="test3">
    <echo>
    This 
    is
    a 
    multiline
    message
    </echo>
    <au:assertTrue>
      <resourcecount count="1">
        <restrict>
          <au:logcontent />
          <contains text="This" />
          <contains text="is" />
          <contains text="a" />
          <contains text="multiline" />
          <contains text="message" />
        </restrict>
      </resourcecount>
    </au:assertTrue>
  </target>

  <target name="testFile">
    <echo file="${output}/echo.txt">Simple text</echo>
    <au:assertTrue>
      <resourcecount count="1">
        <restrict>
          <file file="${output}/echo.txt" />
          <contains text="Simple text" />
        </restrict>
      </resourcecount>
    </au:assertTrue>
  </target>

  <target name="testOutputFile">
    <echo output="${output}/echo.txt">Simple text</echo>
    <au:assertTrue>
      <resourcecount count="1">
        <restrict>
          <file file="${output}/echo.txt" />
          <contains text="Simple text" />
        </restrict>
      </resourcecount>
    </au:assertTrue>
  </target>

  <target name="testAppend">
    <echo file="${output}/echo.txt">Simple text</echo>
    <echo file="${output}/echo.txt" append="true">Appended</echo>
    <concat>
      <file file="${output}/echo.txt" />
    </concat>
    <au:assertTrue>
      <resourcecount count="1">
        <restrict>
          <file file="${output}/echo.txt" />
          <contains text="Simple text" />
          <contains text="Appended" />
        </restrict>
      </resourcecount>
    </au:assertTrue>
  </target>

  <target name="testEmptyEncoding">
    <echo file="${output}/echo.txt" encoding="">Simple text</echo>
    <au:assertTrue>
      <resourcecount count="1">
        <restrict>
          <file file="${output}/echo.txt" />
          <contains text="Simple text" />
        </restrict>
      </resourcecount>
    </au:assertTrue>
  </target>

  <target name="testUTF16Encoding">
    <property name="char" value="&#169;" />
    <echo file="${output}/echo16.txt" encoding="UTF-16">${char}</echo>
    <loadfile property="out.16" srcfile="${output}/echo16.txt"
              encoding="UTF-16"/>
    <au:assertEquals expected="${char}" actual="${out.16}"/>
  </target>

  <target name="testUTF8Encoding">
    <property name="char" value="&#169;" />
    <echo file="${output}/echo8.txt" encoding="UTF8">${char}</echo>
    <au:assertTrue>
      <resourcecount count="1">
        <restrict>
          <concat encoding="UTF-8">
            <file file="${output}/echo8.txt"/>
          </concat>
          <contains text="${char}" encoding="UTF-8"/>
        </restrict>
      </resourcecount>
    </au:assertTrue>
  </target>

</project>
