<?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 xmlns:au="antlib:org.apache.ant.antunit" default="antunit"
         xmlns:rsel="antlib:org.apache.tools.ant.types.resources.selectors">

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

  <property name="dir" location="testdir"/>
  <property name="file" value="testfile"/>

  <condition property="unix">
    <os family="unix"/>
  </condition>

  <target name="createTestdir">
    <mkdir dir="${output}"/>
    <touch file="${output}/${file}"/>
  </target>

  <target name="testReadable" depends="createTestdir">
    <au:assertTrue>
      <resourcecount when="equal" count="1">
        <restrict>
          <fileset dir="${output}"/>
          <rsel:readable/>
        </restrict>
      </resourcecount>
    </au:assertTrue>
    <au:assertTrue>
      <resourcecount when="equal" count="0">
        <restrict>
          <fileset dir="${output}" excludes="${file}"/>
          <rsel:readable/>
        </restrict>
      </resourcecount>
    </au:assertTrue>
  </target>

  <target name="testWritable" depends="createTestdir">
    <au:assertTrue>
      <resourcecount when="equal" count="1">
        <restrict>
          <fileset dir="${output}"/>
          <rsel:writable/>
        </restrict>
      </resourcecount>
    </au:assertTrue>
    <au:assertTrue>
      <resourcecount when="equal" count="0">
        <restrict>
          <fileset dir="${output}" excludes="${file}"/>
          <rsel:writable/>
        </restrict>
      </resourcecount>
    </au:assertTrue>
  </target>

  <target name="makeFileUnwritable" depends="createTestdir">
    <setpermissions mode="444" nonPosixMode="tryDosOrFail">
      <file file="${output}/${file}"/>
    </setpermissions>
  </target>

  <target name="testUnwritable" depends="makeFileUnwritable">
    <au:assertTrue>
      <resourcecount when="equal" count="0">
        <restrict>
          <fileset dir="${output}"/>
          <rsel:writable/>
        </restrict>
      </resourcecount>
    </au:assertTrue>
  </target>

  <target name="testAsConditions" depends="makeFileUnwritable">
    <au:assertTrue>
      <isfileselected file="${output}/${file}">
        <rsel:readable/>
      </isfileselected>
    </au:assertTrue>
    <au:assertFalse>
      <isfileselected file="${output}/${file}">
        <rsel:writable/>
      </isfileselected>
    </au:assertFalse>
  </target>

</project>
