<?xml version="1.0" ?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you 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.
-->

<!DOCTYPE testCases [
  <!ELEMENT testCases (setting?, testCase*)>
  <!ELEMENT testCase (setting?)>
     <!ATTLIST testCase 
               name CDATA #REQUIRED
               template CDATA #IMPLIED
               expected CDATA #IMPLIED
               noOutput CDATA #IMPLIED
     >
     <!-- The default of `template` is "${name?keep_before('[#endTN]')}.ftl" -->
     <!-- The default of `expected` is "${name}.txt" -->
     <!-- The default of `noOutput` is false -->
     
 <!ELEMENT setting EMPTY>
     <!ATTLIST setting 
            auto_import CDATA #IMPLIED
            classic_compatible (Y|N|2) #IMPLIED
            clear_encoding_map (Y|N) #IMPLIED
            input_encoding CDATA #IMPLIED
            locale CDATA #IMPLIED
            object_wrapper CDATA #IMPLIED
            output_encoding CDATA #IMPLIED
            output_dir CDATA #IMPLIED
            strict_syntax (Y|N) #IMPLIED
            new_builtin_class_resolver CDATA #IMPLIED
            url_escaping_charset CDATA #IMPLIED
            incompatible_improvements CDATA #IMPLIED
            time_zone CDATA #IMPLIED
            api_builtin_enabled CDATA #IMPLIED
      >
]>

<testCases>
   <setting input_encoding="UTF-8" output_encoding="UTF-8" />
   
   <testCase name="api-builtins" noOutput="true">
      <setting
            object_wrapper="DefaultObjectWrapper(2.3.22, forceLegacyNonListCollections=false)"
            api_builtin_enabled="true"
      />
   </testCase>
   <testCase name="api-builtins[#endTN]-bw" noOutput="true">
      <setting
            object_wrapper="BeansWrapper(2.3.0)"
            api_builtin_enabled="true"
      />
   </testCase>
   <testCase name="arithmetic" />
   <testCase name="assignments" noOutput="true" />
   <testCase name="bean-maps"/>
   <testCase name="beans">
      <setting object_wrapper="freemarker.ext.beans.BeansWrapper"/>
   </testCase>
   <testCase name="boolean" />
   <testCase name="charset-in-header">
      <setting clear_encoding_map="Y" input_encoding="ISO-8859-5" />
   </testCase>
   <testCase name="comment" />
   <testCase name="comparisons" />
   <testCase name="compress" />
   <testCase name="then-builtin" noOutput="true" />
   <testCase name="dateformat-java" />
   <testCase name="dateformat-iso-like" noOutput="true" />
   <testCase name="dateformat-iso-bi" noOutput="true">
      <setting incompatible_improvements="min, 2.3.20" /> 
   </testCase>
   <testCase name="dateformat-iso-bi-ici-2.3.21" noOutput="true">
      <setting incompatible_improvements="2.3.21, max" /> 
   </testCase>   
   <testCase name="dateparsing" noOutput="true" />
   <testCase name="default"/>
   <testCase name="default-xmlns">
      <setting object_wrapper="freemarker.ext.beans.BeansWrapper"/>
   </testCase>
   <testCase name="encoding-builtins">
      <setting incompatible_improvements="min, 2.3.19" /> 
   </testCase>
   <testCase name="encoding-builtins[#endTN]-ici-2.3.20">
      <setting incompatible_improvements="2.3.20, max" /> 
   </testCase>
   <testCase name="escapes" />
   <testCase name="hashliteral">
      <setting incompatible_improvements="min, 2.3.20, 2.3.21, max" /> 
   </testCase>
   <testCase name="non-strict-syntax" >
      <setting strict_syntax="N" />
   </testCase>
   <testCase name="identifier-non-ascii" />
   <testCase name="identifier-escaping" />
   <testCase name="import">
      <setting auto_import="import_lib.ftl as my"/>
   </testCase>
   <testCase name="include" />
   <testCase name="include2">
      <setting input_encoding="utf-8" />
   </testCase>
   <testCase name="interpret"/>
   <testCase name="iterators"/>
   <testCase name="lastcharacter"/>
   <testCase name="list" />
   <testCase name="list[#endTN]-collectionAdapter" expected="list.txt">
      <setting object_wrapper="DefaultObjectWrapper(2.3.22, forceLegacyNonListCollections=false)" />
   </testCase>
   <testCase name="list2" />
   <testCase name="list2[#endTN]-collectionAdapter" expected="list2.txt">
      <setting object_wrapper="DefaultObjectWrapper(2.3.22, forceLegacyNonListCollections=false)" />
   </testCase>
   <testCase name="list3" />
   <testCase name="list3[#endTN]-collectionAdapter" expected="list3.txt">
      <setting object_wrapper="DefaultObjectWrapper(2.3.22, forceLegacyNonListCollections=false)" />
   </testCase>
   <testCase name="list-bis" />
   <testCase name="list-bis[#endTN]-collectionAdapter" expected="list-bis.txt">
      <setting object_wrapper="DefaultObjectWrapper(2.3.22, forceLegacyNonListCollections=false)" />
   </testCase>
   <testCase name="listhash" />
   <testCase name="listhashliteral[#endTN]-ici-2.3.20">
      <setting incompatible_improvements="min, 2.3.20" /> 
   </testCase>
   <testCase name="listhashliteral[#endTN]-ici-2.3.21">
      <setting incompatible_improvements="2.3.21, max" /> 
   </testCase>
   <testCase name="listliteral" />
   <testCase name="localization" >
      <setting locale="en_AU"/>
   </testCase>
   <testCase name="loopvariable" />
   <testCase name="macros"/>
   <testCase name="macros2"/>
   <testCase name="macros-return"/>
   <testCase name="multimodels"/>
   <testCase name="nested" />
   <testCase name="newlines1" />
   <testCase name="newlines2" />
   <testCase name="noparse" />
   <testCase name="number-format">
      <setting incompatible_improvements="min, 2.3.21, max" /> 
   </testCase>
   <testCase name="number-literal" >
      <setting locale="fr_FR"/>
   </testCase>
   <testCase name="numerical-cast" />
   <testCase name="output-encoding1"/>
   <testCase name="output-encoding2">
       <setting output_encoding="UTF-16"/>
   </testCase>
   <testCase name="output-encoding3">
       <setting output_encoding="ISO-8859-1" url_escaping_charset="UTF-16" />
   </testCase>
   <testCase name="precedence"/>
   <testCase name="range-ici-2.3.20" noOutput="true">
   	  <setting incompatible_improvements="min, 2.3.20"/>
   </testCase>
   <testCase name="range-ici-2.3.21" noOutput="true">
      <setting incompatible_improvements="2.3.21, max"/>
   </testCase>
   <testCase name="range-lazy" noOutput="true">
      <setting incompatible_improvements="2.3.22"/>
   </testCase>
   <testCase name="recover" />
   <testCase name="root" />
   <testCase name="setting" noOutput="true" />
   <testCase name="sequence-builtins[#endTN]-with-BeansWrapper" expected="sequence-builtins.txt">
      <setting object_wrapper="freemarker.ext.beans.BeansWrapper"/> 
   </testCase>
   <testCase name="sequence-builtins[#endTN]-with-DefaultObjectWrapper" expected="sequence-builtins.txt">
      <setting object_wrapper="freemarker.template.DefaultObjectWrapper"/> 
   </testCase>
   <testCase name="sequence-builtins[#endTN]-with-DefaultObjectWrapper-collAdapters" expected="sequence-builtins.txt">
      <setting object_wrapper="DefaultObjectWrapper(2.3.22, forceLegacyNonListCollections=false)"/> 
   </testCase>
   <testCase name="sequence-builtins[#endTN]-with-SimpleObjectWrapper" expected="sequence-builtins.txt">
      <setting object_wrapper="freemarker.template.SimpleObjectWrapper"/> 
   </testCase>
   <testCase name="simplehash-char-key" noOutput="true" />
   <testCase name="strictinheader">
      <setting strict_syntax="N"/>
   </testCase>
   <testCase name="existence-operators" noOutput="true" />
   <testCase name="string-builtins1">
      <setting incompatible_improvements="min, 2.3.20, max"/>
   </testCase>
   <testCase name="string-builtins2" />
   <testCase name="string-builtins3" noOutput="true" />
   <testCase name="string-builtins-regexps" />
   <testCase name="string-builtins-regexps-matches" />
   <testCase name="stringbimethods" />
   <testCase name="stringliteral"/>
   <testCase name="if" />
   <testCase name="switch" />
   <testCase name="switch-builtin" noOutput="true" />
   <testCase name="transforms"/>
   <testCase name="type-builtins">
      <setting incompatible_improvements="min, 2.3.20"/>
   </testCase>
   <testCase name="type-builtins[#endTN]-ici-2.3.21">
   	  <setting incompatible_improvements="2.3.21, 2.3.23"/>
   </testCase>
   <testCase name="type-builtins[#endTN]-ici-2.3.24">
      <setting incompatible_improvements="2.3.24, max"/>
   </testCase>
   <testCase name="date-type-builtins" noOutput="true" />
   <testCase name="url" noOutput="true" />
   <testCase name="var-layers"/>
   <testCase name="variables"/>
   <testCase name="whitespace-trim"/>
   <testCase name="wstrip-in-header"/>
   <testCase name="xml-fragment">
      <setting object_wrapper="freemarker.ext.beans.BeansWrapper"/> 
   </testCase>
   <testCase name="xmlns1">
      <setting object_wrapper="freemarker.ext.beans.BeansWrapper"/>
   </testCase>
   <testCase name="xmlns2" template="xmlns1.ftl"  expected="xmlns1.txt" />
   <testCase name="xmlns3">
      <setting object_wrapper="freemarker.ext.beans.BeansWrapper"/>
   </testCase>   
   <testCase name="xmlns4">
      <setting object_wrapper="freemarker.ext.beans.BeansWrapper"/>
   </testCase>   
   <testCase name="xmlns5">
      <setting object_wrapper="freemarker.ext.beans.BeansWrapper"/>
   </testCase>   
   <testCase name="xml-ns_prefix-scope" template="xml-ns_prefix-scope-main.ftl" />
   <testCase name="hashconcat"/>
   <testCase name="new-defaultresolver" />
   <testCase name="new-unrestricted">
      <setting new_builtin_class_resolver="unrestricted"/>
   </testCase>   
   <testCase name="new-safer">
      <setting new_builtin_class_resolver="safer"/>
   </testCase>   
   <testCase name="new-allowsnothing">
      <setting new_builtin_class_resolver="allows_nothing"/>
   </testCase>   
   <testCase name="new-optin">
      <setting new_builtin_class_resolver="
      		allowed_classes: freemarker.test.templatesuite.models.NewTestModel,
      		trusted_templates: subdir/new-optin.ftl, subdir/subsub/*"
      />
   </testCase>   
   <testCase name="specialvars">
      <setting locale="en_US" output_encoding="utf-8" url_escaping_charset="iso-8859-1"/>
   </testCase>   
   <testCase name="number-to-date" />
   <testCase name="varargs" />
   <testCase name="classic-compatible">
      <setting classic_compatible="Y"/>
   </testCase>   
   <testCase name="classic-compatible-mode2" noOutput="true">
      <setting classic_compatible="2"/>
   </testCase>   
   <testCase name="boolean-formatting"  />
   <testCase name="number-math-builtins" noOutput="true" />
   <testCase name="string-builtin-coercion" noOutput="true" />
   <testCase name="string-builtins-ici-2.3.20" noOutput="true">
      <setting incompatible_improvements="2.3.20"/>
   </testCase>
   <testCase name="string-builtins-ici-2.3.19" noOutput="true">
      <setting incompatible_improvements="2.3.19"/>
   </testCase>
   
   <testCase name="overloaded-methods-23bc" noOutput="true">
      <setting incompatible_improvements="2.3.0, 2.3.19"/>
   </testCase>
   <testCase name="overloaded-methods-2-inc-bwici-2.3.20" noOutput="true">
      <setting object_wrapper="freemarker.ext.beans.BeansWrapperInc2003020"/>
   </testCase>
   <testCase name="overloaded-methods-2-desc-bwici-2.3.20" noOutput="true">
      <setting object_wrapper="freemarker.ext.beans.BeansWrapperDesc2003020"/>
   </testCase>
   <testCase name="overloaded-methods-2-bwici-2.3.21[#endTN]-inc" noOutput="true">
      <setting object_wrapper="freemarker.ext.beans.BeansWrapperInc2003021"/>
   </testCase>
   <testCase name="overloaded-methods-2-bwici-2.3.21[#endTN]-desc" noOutput="true">
      <setting object_wrapper="freemarker.ext.beans.BeansWrapperDesc2003021"/>
   </testCase>
   <testCase name="overloaded-methods-2-inc-bwici-2.3.20[#endTN]-dow" noOutput="true">
      <setting object_wrapper="freemarker.ext.beans.DefaultObjectWrapperInc2003020"/>
   </testCase>
   <testCase name="overloaded-methods-2-desc-bwici-2.3.20[#endTN]-dow" noOutput="true">
      <setting object_wrapper="freemarker.ext.beans.DefaultObjectWrapperDesc2003020"/>
   </testCase>
   <testCase name="overloaded-methods-2-bwici-2.3.21[#endTN]-inc-dow" noOutput="true">
      <setting object_wrapper="freemarker.ext.beans.DefaultObjectWrapperInc2003021"/>
   </testCase>
   <testCase name="overloaded-methods-2-bwici-2.3.21[#endTN]-desc-dow" noOutput="true">
      <setting object_wrapper="freemarker.ext.beans.DefaultObjectWrapperDesc2003021"/>
   </testCase>
   <testCase name="overloaded-methods-2-bwici-2.3.21[#endTN]-inc-dow-2.3.22" noOutput="true">
      <setting object_wrapper="freemarker.ext.beans.DefaultObjectWrapperInc2003022"/>
   </testCase>
   <testCase name="overloaded-methods-2-bwici-2.3.21[#endTN]-desc-dow-2.3.22" noOutput="true">
      <setting object_wrapper="freemarker.ext.beans.DefaultObjectWrapperDesc2003022"/>
   </testCase>
</testCases>
