| <?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> |