<?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:test="jelly:junit">

  <test:case name="testSetAndRemove">
    
        <j:set var="x" value="abc"/>
        
        <test:assertEquals expected="abc" actual="${x}"/>
        
        <j:remove var="x"/>
        
        <test:assert test="${x == null}"/>
        <test:assert test="${empty x}"/>
        
  </test:case>

  <test:case name="testSetWithDefault">
    
        <j:set var="foo" value="abc"/>
        <j:set var="x" value="${doesNotExist}" defaultValue="${foo}"/>
        
        <test:assertEquals expected="abc" actual="${x}"/>

        <j:set var="doesNotExist" value="def"/>        
        <j:set var="x" value="${doesNotExist}" defaultValue="${foo}"/>
        
        <test:assertEquals expected="def" actual="${x}"/>
        
  </test:case>

  <test:case name="testScope">

        <j:set var="outer" value="def"/>

        <test:assertEquals expected="def" actual="${outer}"/>
        
        <j:scope>    
            <j:set var="x" value="abc"/>
            
            <test:assertEquals expected="abc" actual="${x}"/>
            <test:assertEquals expected="def" actual="${outer}"/>
        </j:scope>            
            
        <test:assert test="${x == null}"/>
        <test:assert test="${empty x}"/>
        
  </test:case>
        
  <test:case name="testChoose">
    
        <j:set var="x" value="abc"/>
        
        <j:choose>
          <j:when test="${x == 'abc'}">
            this should always work
          </j:when>
          <j:when test="${x == 'xyz'}">
            <fail>This should never fail</fail>
          </j:when>
          <j:otherwise>
            <fail>This should never fail</fail>
          </j:otherwise>
        </j:choose>
                    
        <j:choose>
          <j:when test="${x == 'xyz'}">
            <fail>This should never fail</fail>
          </j:when>
          <j:when test="${x == 'abc'}">
            this should always work
          </j:when>
          <j:otherwise>
            <fail>This should never fail</fail>
          </j:otherwise>
        </j:choose>
                    
                    
        <j:choose>
          <j:when test="${x == 'xyz'}">
            <fail>This should never fail</fail>
          </j:when>
          <j:when test="${x == 'zzz'}">
            <fail>This should never fail</fail>
          </j:when>
          <j:otherwise>
            this should always work
          </j:otherwise>
        </j:choose>
                
  </test:case>


    <test:case name="testIf">
    
        <j:set var="x" value="abc"/>
        <j:set var="worked" value="f"/>
        
        <j:if test="${x == 'abc'}">
          this should always work
          <j:set var="worked" value="t"/>
        </j:if>
        
        <test:assertEquals expected="t" actual="${worked}"/>
    
        <j:if test="${x == 'zzz'}">
          <fail>This should never fail</fail>
        </j:if>
                
  </test:case>

    <test:case name="testNewAndSetProperties">
        <j:new className="org.apache.commons.jelly.core.Customer" var="customer"/>
        <j:setProperties object="${customer}" name="James" city="London" />

        Created a new bean: ${customer}
            
        <test:assert test="${customer != null}">Created a customer bean</test:assert>
        
        <test:assertEquals 
            expected="James" 
            actual="${customer.name}"/>
            
        <test:assertEquals 
            expected="London" 
            actual="${customer.city}"/>
            
        <test:assertEquals 
            expected="org.apache.commons.jelly.core.Customer" 
            actual="${customer.class.name}"/>
  </test:case>

    <test:case name="testUseBean">
        <j:useBean var="customer" class="org.apache.commons.jelly.core.Customer" name="James" city="London" />

        Created a new bean: ${customer}
            
        <test:assert test="${customer != null}">Created a customer bean</test:assert>
        
        <test:assertEquals 
            expected="James" 
            actual="${customer.name}"/>
            
        <test:assertEquals 
            expected="London" 
            actual="${customer.city}"/>
            
        <test:assertEquals 
            expected="org.apache.commons.jelly.core.Customer" 
            actual="${customer.class.name}"/>
  </test:case>

    <test:case name="testUseBeanWithSetProperties">
        <j:useBean var="customer" class="org.apache.commons.jelly.core.Customer" name="James">

            <!-- typically the following tag might be nested inside some conditional logic -->
            <j:setProperties name="Bob" city="Atlanta"/>
        </j:useBean>            
                                        
        Created a new bean: ${customer}
            
        <test:assert test="${customer != null}">Created a customer bean</test:assert>
        
        <test:assertEquals 
            expected="Bob" 
            actual="${customer.name}"/>
            
        <test:assertEquals 
            expected="Atlanta" 
            actual="${customer.city}"/>
            
        <test:assertEquals 
            expected="org.apache.commons.jelly.core.Customer" 
            actual="${customer.class.name}"/>
  </test:case>

    <test:case name="testSetWithNoEncoding">
        <j:set var="foo" encode="false">
            <foo x="1">hello</foo>
        </j:set>

        <test:assertEquals 
            expected='&lt;foo x="1"&gt;hello&lt;/foo&gt;' 
            actual="${foo}"/>
  </test:case>

    <test:case name="testFileToVar">
        <j:file var="foo" omitXmlDeclaration="true">
            <foo x="1">hello</foo>
        </j:file>

        <test:assertEquals 
            expected='&lt;foo x="1"&gt;hello&lt;/foo&gt;' 
            actual="${foo}"/>
  </test:case>


    <!-- whitespace trimming tests -->
    <test:case name="testTrim">
        
        <j:set var="foo">
            <j:forEach var="i" begin="1" end="3" trim="false">  ${i} </j:forEach>
        </j:set>

        <test:assertEquals 
            expected="  1   2   3 "
            actual="${foo}"/>
        
        <j:set var="foo">
            <j:forEach var="i" begin="1" end="3" trim="true">  ${i} </j:forEach>
        </j:set>

        <test:assertEquals 
            expected="123"
            actual="${foo}"/>
        
        <j:set var="foo">
            <j:forEach var="i" begin="1" end="3" trim="true">  foo ${i} </j:forEach>
        </j:set>

        <test:assertEquals 
            expected="foo 1foo 2foo 3"
            actual="${foo}"/>

        <j:set var="foo">
            <j:forEach var="i" begin="1" end="3" trim="true">  foo ${i} bar </j:forEach>
        </j:set>

        <test:assertEquals 
            expected="foo 1 barfoo 2 barfoo 3 bar"
            actual="${foo}"/>
  </test:case>
  
    <test:case name="testBreak">
        
        <j:forEach var="i" begin="1" end="10">
            <j:if test="${i==4}">
                <j:break/>
            </j:if>
        </j:forEach>

        <test:assert test="${i==4}"/> 

        <j:while test="${i != 10}">
            <j:if test="${i==6}">
                <j:break/>
            </j:if>
            <j:set var="i" value="${i+1}"/>
        </j:while>

        <test:assert test="${i==6}"/> 
        
  </test:case>
  
    <test:case name="testBreakWithIf">
        
        <j:forEach var="i" begin="1" end="10">
            <j:break test="${i==4}"/>
        </j:forEach>

        <test:assert test="${i==4}"/> 

        <j:while test="${i != 10}">
            <j:break test="${i==6}"/>
            <j:set var="i" value="${i+1}"/>
        </j:while>

        <test:assert test="${i==6}"/> 
        
  </test:case>

  <test:case name="testVariablesWithDots">
        
        <j:set var="page.name" value="a"/>
        <j:set var="page.foo" value="b"/>
        
        
        <test:assertEquals expected="a" actual="${page.name}"/> 
        <test:assertEquals expected="b" actual="${page.foo}"/> 

        <j:set var="outer" value="def"/>

        <test:assertEquals expected="def" actual="${outer}"/>
        
        <j:scope>    
            <test:assertEquals expected="a" actual="${page.name}"/> 
            <test:assertEquals expected="b" actual="${page.foo}"/> 
        </j:scope>            
        
  </test:case>

  <!-- tests to make sure import works -->
  <test:case name="testImport">

    <j:set var="parentVar" value="12" />
    
    <!-- imported scripts by default do not inherit parent vars,
         but export to them -->
    <j:set var="test1" value="original"/>
    <j:import uri="import1.jelly"/>
    <test:assert test="${test1 == null}"/> 

    <!-- inherit parent vars, and export to them -->
    <j:set var="test1" value="original"/>
    <j:import uri="import1.jelly" inherit="true"/>
    <test:assertEquals expected="12" actual="${test1}"/> 

    <!-- explicitly do not inherit parent vars,
         but export to them -->
    <j:set var="test1" value="original"/>
    <j:import uri="import1.jelly" inherit="false"/>
    <test:assert test="${test1 == null}"/> 

  </test:case>

  <!-- tests whether the mute tag indeed outputs nothing -->
  <test:case name="testMuteTag">
    <j:set var="shouldBeNothing"><j:mute>blop</j:mute></j:set>
    <test:assertEquals expected="" actual="${shouldBeNothing}"/>
  </test:case>

  <test:case name="testForEachWithString">
    <j:set var="j" value=""/>
        
    <j:forEach var="i" items="a,b,c">
      <j:set var="j" value="${j}${i}"/>
    </j:forEach>

    <test:assertEquals expected="abc" actual="${j}"/>
  </test:case>
  
  <!-- tests the file output provided by j:file -->
  <test:case name="testFileTag">
    <j:file name="target/test_iso.xml" encoding="ISO-8859-1" omitXmlDeclaration="true">
      <l>é#\ü</l></j:file>
    <!-- how to check result without xml-unit ? -->
    <j:new var="f" className="java.io.File"><j:arg value="target/test_iso.xml"/></j:new>
    <j:set var="singleSize" value="${f.length()}"/>
    <!-- try outputting a second time -->
    <j:file name="target/test_iso.xml" encoding="ISO-8859-1" 
       omitXmlDeclaration="true" append="true">
      <l>é#\ü</l></j:file>
    <j:set var="doubleSize" value="${f.length()}"/>
    <test:assertEquals expected="${singleSize*2}" actual="${doubleSize}"/>
    </test:case>
</test:suite>
