blob: 57e5aee299926047471d2839365fa8623a8c23f5 [file] [log] [blame]
<?xml version="1.0"?>
<!--
Copyright 2002-2004 The Apache Software Foundation
Licensed 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.
-->
<test:suite
xmlns:j="jelly:core"
xmlns:util="jelly:util"
xmlns:test="jelly:junit">
<test:case name="testTokenize">
<util:tokenize var="tokens" delim=",">Test1,Test2,Test3,Test4</util:tokenize>
<j:set var="s" value="${size(tokens)}"/>
<test:assert test="${s == 4}"/>
<test:assert test="${size(tokens) == 4}"/>
<!--
<j:set var="s" value="${tokens.size()}"/>
<test:assert test="${s == 4}"/>
<test:assert test="${tokens.size() == 4}"/>
-->
<test:assertEquals expected="Test1" actual="${tokens[0]}"/>
<test:assertEquals expected="Test2" actual="${tokens[1]}"/>
<test:assertEquals expected="Test3" actual="${tokens[2]}"/>
<test:assertEquals expected="Test4" actual="${tokens[3]}"/>
<test:assertEquals expected="Test4" actual="${tokens[s - 1]}"/>
<test:assertEquals expected="Test4" actual="${tokens[size(tokens) - 1]}"/>
<!--
<test:assertEquals expected="Test4" actual="${tokens.get(size(tokens) - 1)}"/>
<test:assertEquals expected="Test4" actual="${tokens[tokens.size() - 1]}"/>
<test:assertEquals expected="Test4" actual="${tokens.get(tokens.size() - 1)}"/>
-->
</test:case>
<test:case name="testFileExists">
<!-- ensure that ${base.dir} is defined -->
<j:if test="${empty base.dir}">
<j:set var="base.dir" value="."/>
</j:if>
<j:set var="flag" value="not found"/>
<util:available file="${base.dir}/project.xml">
<j:set var="flag" value="found"/>
</util:available>
<test:assertEquals expected="found" actual="${flag}">
Should have found the file via the file $${base.dir}/project.xml with base.dir=${base.dir}
</test:assertEquals>
<util:available file="${base.dir}/doesNotExist.xml">
<test:fail>The file ${base.dir}/doesNotExist.xml should not exist</test:fail>
</util:available>
</test:case>
<test:case name="testURIExists">
<j:set var="flag" value="not found"/>
<!-- use relative URIs-->
<util:available uri="dummy.xml">
<j:set var="flag" value="found"/>
</util:available>
<test:assertEquals expected="found" actual="${flag}">
Should have found the file via the URI dummy.xml
</test:assertEquals>
<util:available uri="doesNotExist.xml">
<test:fail>The URI doesNotExist.xml should not exist!</test:fail>
</util:available>
</test:case>
<test:case name="testReplace">
<util:replace oldChar="\" newChar="/" var="testString">A\B</util:replace>
<test:assertEquals expected="A/B" actual="${testString}">
Should have replaced a back slash with a forward one
</test:assertEquals>
<j:set var="testString2"><util:replace oldChar="\" newChar="/">A\B</util:replace></j:set>
<test:assertEquals expected="A/B" actual="${testString2}">
Should have replaced a back slash with a forward one
and placed the result into output
</test:assertEquals>
<util:replace oldChar="/" newChar="\" value="${testString}" var="testString3" />
<test:assertEquals expected="A\B" actual="${testString3}">
Should have replaced a slash with a back slash from a variable
and placed the result into a variable
</test:assertEquals>
<util:replace oldChar="ABC" newChar="123" value="CBABC" var="testString4" />
<test:assertEquals expected="CB1BC" actual="${testString4}">
Should have only substituted the 1 for the A, since the
old/newChar attributes were used.
</test:assertEquals>
<util:replace old="brown" new="black" value="The quick brown fox" var="testString6" />
<test:assertEquals expected="The quick black fox" actual="${testString6}">
Should have substituted the string "black" for "brown"
</test:assertEquals>
</test:case>
<test:case name="testProperties">
<util:properties uri="foo.properties"/>
<test:assertEquals expected="ABC" actual="${foo}"/>
</test:case>
<test:case name="testPropertiesVar">
<util:properties uri="foo.properties" var="props"/>
<test:assertEquals expected="ABC" actual="${props.foo}"/>
Loaded properties value ${props}
</test:case>
<test:case name="testPropertiesAreNotLocked">
<j:set var="filename" value="${basedir}/target/test-classes/org/apache/commons/jelly/tags/util/deletable.properties"/>
<util:properties file="${filename}"/>
<j:new var="f" className="java.io.File">
<j:arg type="java.lang.String" value="${filename}"/>
</j:new>
<j:mute>
${f.delete()}
</j:mute>
<test:assertEquals expected="${false}" actual="${f.exists()}" >The file ${name} should no longer exist</test:assertEquals>
</test:case>
<test:case name="testFileTag">
<util:file name="${basedir}/src/test/org/apache/commons/jelly/tags/util/suite.jelly"
var="suite" />
<test:assert test="${suite != null}" >The suite should exist</test:assert>
</test:case>
<test:case name="testSortBasic">
<j:new var="testCollection" className="java.util.ArrayList"/>
<j:mute>
${testCollection.add('Hello')}
${testCollection.add('World')}
${testCollection.add('Jelly')}
</j:mute>
<util:sort var="sorted" items="${testCollection}" />
<test:assertEquals expected="Hello" actual="${sorted[0]}"/>
<test:assertEquals expected="Jelly" actual="${sorted[1]}"/>
<test:assertEquals expected="World" actual="${sorted[2]}"/>
</test:case>
<test:case name="testSortBean">
<j:new var="testCollection" className="java.util.ArrayList"/>
<j:useBean var="cust1" class="org.apache.commons.jelly.util.Customer" city="Sydney" location="Australia" name="Fred Nerk"/>
<j:useBean var="cust2" class="org.apache.commons.jelly.util.Customer" city="Melbourne" location="Australia" name="Joe Nerk"/>
<j:useBean var="cust3" class="org.apache.commons.jelly.util.Customer" city="San Francisco" location="U.S.A." name="Colette Cool"/>
<j:mute>
${testCollection.add(cust1)}
${testCollection.add(cust2)}
${testCollection.add(cust3)}
</j:mute>
<!-- test sorting by the name property -->
<util:sort var="sortedByName" items="${testCollection}" property="name"/>
<test:assertEquals expected="Colette Cool" actual="${sortedByName[0].name}"/>
<test:assertEquals expected="Fred Nerk" actual="${sortedByName[1].name}"/>
<test:assertEquals expected="Joe Nerk" actual="${sortedByName[2].name}"/>
<!-- test sorting by the location property -->
<util:sort var="sortedByLocation" items="${testCollection}" property="location"/>
<test:assertEquals expected="Australia" actual="${sortedByLocation[0].location}"/>
<test:assertEquals expected="Australia" actual="${sortedByLocation[1].location}"/>
<test:assertEquals expected="U.S.A." actual="${sortedByLocation[2].location}"/>
</test:case>
</test:suite>