Browse Source

add tests for non-string properties

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@557100 13f79535-47bb-0310-9956-ffa450edef68
master
Matthew Jason Benson 18 years ago
parent
commit
ef8705f5b4
1 changed files with 93 additions and 9 deletions
  1. +93
    -9
      src/tests/antunit/taskdefs/propertyhelper-test.xml

+ 93
- 9
src/tests/antunit/taskdefs/propertyhelper-test.xml View File

@@ -1,25 +1,109 @@
<project default="antunit" xmlns:au="antlib:org.apache.ant.antunit"> <project default="antunit" xmlns:au="antlib:org.apache.ant.antunit">
<!-- each test verifies that the PropertyEvaluator delegate works -->
<import file="../antunit-base.xml" /> <import file="../antunit-base.xml" />


<target name="testScript">
<target name="setUp" unless="setup.complete">
<script language="beanshell" manager="bsf"> <script language="beanshell" manager="bsf">
import org.apache.tools.ant.PropertyHelper; import org.apache.tools.ant.PropertyHelper;
public class FooEvaluator implements PropertyHelper.PropertyEvaluator {
public class MapEvaluator implements PropertyHelper.PropertyEvaluator {
HashMap map = new HashMap();
public MapEvaluator() {
map.put("string", "string");
map.put("object", new Object());
map.put("int", new Integer(1));
map.put("null", null);
}
public Object evaluate(String property, PropertyHelper propertyHelper) { public Object evaluate(String property, PropertyHelper propertyHelper) {
return "foo".equals(property) ? "foo.value" : null;
return map.get(property.toLowerCase());
} }
} }
project.addReference("fooEvaluator", new FooEvaluator());
project.addReference("mapEvaluator", new MapEvaluator());
</script> </script>
<au:assertFalse>
<isset property="foo" />
</au:assertFalse>
<propertyhelper> <propertyhelper>
<delegate refid="fooEvaluator" />
<delegate refid="mapEvaluator" />
</propertyhelper> </propertyhelper>
<property name="setup.complete" value="true" />
</target>

<target name="testValueTypes" depends="setUp">
<!-- verify BC, strings -->
<au:assertPropertyEquals name="string" value="${STRING}" />

<!-- verify non-string properties -->
<au:assertPropertyEquals name="object" value="${OBJECT}" />
<au:assertPropertyEquals name="int" value="${INT}" />

<!-- verify that a string containing nothing but a property reference is a valid value -->
<property name="string2" value="${string}" />
<au:assertPropertyEquals name="string2" value="${string}" />

<property name="object2" value="${object}" />
<!-- demonstrate that equals args can be non-string -->
<au:assertPropertyEquals name="object2" value="${object}" />

<property name="int2" value="${int}" />
<au:assertPropertyEquals name="int2" value="${int}" />
</target>

<target name="testNull" depends="setUp">
<!-- demonstrate that a null value always implies a nonexistent property -->
<au:assertFalse>
<isset property="null" />
</au:assertFalse>
</target>

<target name="testAvailable" depends="setUp">
<!-- verify the available task can set a non-string property -->
<available file="${ant.file}" type="file" property="available.string" value="bc" />
<au:assertPropertyEquals name="available.string" value="bc" />
<available file="${ant.file}" type="file" property="available.object" value="${object}" />
<au:assertPropertyEquals name="available.object" value="${OBJECT}" />
</target>

<target name="testCondition" depends="setUp">
<!-- verify the condition task can set a non-string property -->
<echo>$${ant.file}=${ant.file}</echo>
<condition property="condition.true.string">
<available file="${ant.file}" type="file" />
</condition>
<au:assertPropertyEquals name="condition.true.string" value="true" />
<condition property="condition.else.string" value="true" else="false">
<not><available file="${ant.file}" type="file" /></not>
</condition>
<au:assertPropertyEquals name="condition.else.string" value="false" />
<condition property="condition.true.object" value="${object}">
<available file="${ant.file}" type="file" />
</condition>
<au:assertPropertyEquals name="condition.true.object" value="${OBJECT}" />
<condition property="condition.else.int" value="${object}" else="${int}">
<not><available file="${ant.file}" type="file" /></not>
</condition>
<au:assertPropertyEquals name="condition.else.int" value="${INT}" />
</target>

<target name="testEmbeddedNonString">
<!-- verify that a property embedded in a string is a substring -->
<au:assertTrue>
<equals arg1="@${int}@" arg2="@1@" />
</au:assertTrue>
</target>

<target name="testLoadProperties">
<au:assertFalse>
<isset property="object2" />
</au:assertFalse>
<string id="props" value="object2=$${object}" />
<!-- verify the property is not yet expanded -->
<au:assertTrue> <au:assertTrue>
<equals arg1="${foo}" arg2="foo.value" />
<length length="17">
<resource refid="props" />
</length>
</au:assertTrue> </au:assertTrue>
<loadproperties>
<resource refid="props" />
</loadproperties>
<au:assertPropertyEquals name="object2" value="${object}" />
<au:assertPropertyEquals name="object2" value="${OBJECT}" />
</target> </target>


</project> </project>

Loading…
Cancel
Save