<?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.
-->
<j:jelly trim="false" xmlns:j="jelly:core">
<testcase>
    
  <j:set var="topping">cheese</j:set>
  <j:set var="base">deep pan</j:set>

  <j:set var="test" value="pizza has ${topping} on top"/>
  
  <j:if test="${test != 'pizza has cheese on top'}">
      <fail>attribute test failed. Found <j:expr value="${test}"/> and expected 'pizza has cheese on top'</fail>
  </j:if>
      
  <j:set var="test">pizza has ${topping} on top</j:set>
  
  <j:if test="${test != 'pizza has cheese on top'}">
      <fail>element test failed. Found <j:expr value="${test}"/> and expected 'pizza has cheese on top'</fail>
  </j:if>
      
</testcase>
</j:jelly>

