<?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:x="jelly:xml" | |
xmlns:test="jelly:junit" | |
xmlns:log="jelly:log" | |
xmlns:define="jelly:define" | |
xmlns:dynamicTest="dynamicTest"> | |
<test:case name="invoke"> | |
<define:script var="fooScript"> | |
<log:info>Generating some XML</log:info> | |
<foo id="1"> | |
<bar>some XML</bar> | |
</foo> | |
</define:script> | |
<!-- now lets invoke the script --> | |
<x:parse var="doc"> | |
<log:info>About to invoke the script!</log:info> | |
<define:invoke script="${fooScript}"/> | |
</x:parse> | |
<x:forEach select="$doc//foo"> | |
<test:assert xpath="bar"/> | |
</x:forEach> | |
<test:assert xpath="$doc/foo/bar"/> | |
</test:case> | |
<test:case name="dynamicTag"> | |
<!-- Init the new tag. --> | |
<define:taglib uri="dynamicTest"> | |
<define:jellybean | |
name="test" | |
className="org.apache.commons.jelly.tags.define.DynamicTag" | |
/> | |
</define:taglib> | |
<j:set var="output"> | |
<dynamicTest:test> | |
ignored output to make sure doTag is being called | |
</dynamicTest:test> | |
</j:set> | |
<test:assertEquals | |
expected="output - ignored body" | |
actual="${output}" | |
/> | |
</test:case> | |
<test:case name="dynaBeans" | |
xmlns:dynabean="jelly:dynabean" | |
xmlns:my="dynamicDynaBeanTest"> | |
<!-- create a DynaClass --> | |
<dynabean:dynaclass var="CustomerType" name="CustomerDynaClass"> | |
<dynabean:property name="name" type="String" /> | |
<dynabean:property name="address" type="String" /> | |
</dynabean:dynaclass> | |
<!-- Create a new tag library binding the dynabeans. --> | |
<define:taglib uri="dynamicDynaBeanTest"> | |
<define:dynaBean | |
name="customer" | |
dynaClass="${CustomerType}" | |
/> | |
</define:taglib> | |
<!-- now lets create a customer --> | |
<my:customer var="customer" name="Customer 1" address="Address of Customer 1" /> | |
<test:assert test="${customer != null}">Created a customer DynaBean</test:assert> | |
<test:assertEquals | |
expected="Customer 1" | |
actual="${customer.name}"/> | |
<test:assertEquals | |
expected="Address of Customer 1" | |
actual="${customer.address}"/> | |
<test:assertEquals | |
expected="CustomerDynaClass" | |
actual="${customer.dynaClass.name}"/> | |
</test:case> | |
<test:case name="testTaglibInheritTest" xmlns="taglibInherit"> | |
<define:taglib uri="taglibInherit" inherit="false"> | |
<define:tag name="foo"> | |
bar | |
</define:tag> | |
</define:taglib> | |
<define:taglib uri="taglibInherit" inherit="true"> | |
<define:tag name="foo2"> | |
bar2 | |
</define:tag> | |
</define:taglib> | |
<j:set var="output"> | |
<foo/> | |
</j:set> | |
<test:assertEquals expected="bar" actual="${output}"/> | |
</test:case> | |
<test:case name="testExtend" xmlns="taglibExtend"> | |
<define:taglib uri="taglibExtend" inherit="false"> | |
<define:tag name="foo"> | |
foo | |
</define:tag> | |
</define:taglib> | |
<j:set var="output"><foo/></j:set> | |
<test:assertEquals expected="foo" actual="${output}"/> | |
<!-- extend the foo tag --> | |
<define:taglib uri="taglibExtend" inherit="true"> | |
<define:extend name="foo"> | |
bar | |
</define:extend> | |
</define:taglib> | |
<j:set var="output"> | |
<foo/> | |
</j:set> | |
<test:assertEquals expected="bar" actual="${output}"/> | |
</test:case> | |
<test:case name="testSuper" xmlns="taglibSuper"> | |
<define:taglib uri="taglibSuper" inherit="false"> | |
<define:tag name="foo"> | |
foo | |
</define:tag> | |
</define:taglib> | |
<!-- extend the foo tag --> | |
<define:taglib uri="taglibSuper" inherit="true"> | |
<define:extend name="foo"> | |
<define:super/> | |
bar | |
</define:extend> | |
</define:taglib> | |
<j:set var="output"> | |
<foo/> | |
</j:set> | |
<test:assertEquals expected="foobar" actual="${output}"/> | |
<!-- extend the foo tag --> | |
<define:taglib uri="taglibSuper" inherit="true"> | |
<define:extend name="foo"> | |
bar | |
<define:super/> | |
</define:extend> | |
</define:taglib> | |
<j:set var="output"> | |
<foo/> | |
</j:set> | |
<test:assertEquals expected="barfoobar" actual="${output}"/> | |
</test:case> | |
<test:case name="testOverrideVariablesWithAttributes"> | |
<define:taglib uri="testOverrideVariablesWithAttributes"> | |
<define:tag name="getValueOfVarA">${varA}</define:tag> | |
</define:taglib> | |
<j:set var="varA" value="varA valueFromSet"/> | |
<j:set var="obtained"><getValueOfVarA varA="varA value from attribute" | |
xmlns="testOverrideVariablesWithAttributes"/></j:set> | |
<log:info>obtained is ${obtained}</log:info> | |
<test:assertEquals | |
expected="varA value from attribute" | |
actual ="${obtained}"/> | |
</test:case> | |
</test:suite> |