<!--

   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.

-->
<!-- ========================================================================= -->
<!-- @author vincent.hardy@eng.sun.com                                         -->
<!-- @version $Id$ -->
<!-- ========================================================================= -->
<testSuite id="beSuite" name="SVG Basic Effectivity Test Suite" class="org.apache.batik.test.svg.BERenderingTest">

    <!-- =================================================================== -->
    <!-- Rendering                                                           -->
    <!-- =================================================================== -->
    <testGroup id="rendering">
        <test id="rendering-orderGr-BE-01.svg" />
        <test id="rendering-text-BE-02.svg" />
        <test id="rendering-shape-BE-03.svg" />
    </testGroup>

    <!-- =================================================================== -->
    <!-- Structure                                                           -->
    <!-- =================================================================== -->
    <testGroup id="structure">
        <test id="structure-empty-BE-01.svg" />
        <test id="structure-nested-BE-02.svg" />
        <test id="structure-basicG-BE-03.svg" />
        <test id="structure-defs-BE-04.svg" />
        <test id="structure-symbol-BE-05.svg" />
        <test id="structure-image-BE-06.svg" />
        <test id="structure-switch-BE-07.svg" />
        <test id="structure-lang-BE-08.svg" />
        <test id="structure-allElem-BE-09.svg" />
        <test id="structure-extRef-BE-10.svg" />
    </testGroup>

    <!-- =================================================================== -->
    <!-- Style                                                               -->
    <!-- =================================================================== -->
    <testGroup id="style">
        <test id="style-selector-BE-01.svg" />
        <test id="style-selector-BE-02.svg" />
        <test id="style-selector-BE-03.svg" />
    </testGroup>

    <!-- =================================================================== -->
    <!-- Coordinates & Transforms                                            -->
    <!-- =================================================================== -->
    <testGroup id="coords">
        <test id="coords-units-BE-01.svg" />
        <test id="coords-transforms-BE-02.svg" />
        <test id="coords-viewBox-BE-03.svg" />
        <test id="coords-unitsProc-BE-04.svg" />
        <test id="coords-unitsProc-BE-05.svg" />
    </testGroup>

    <!-- =================================================================== -->
    <!-- Path                                                                -->
    <!-- =================================================================== -->
    <testGroup id="path">
        <test id="path-lines-BE-01.svg" />
        <test id="path-curves-BE-02.svg" />
        <test id="path-curves-BE-03.svg" />
        <test id="path-curves-BE-04.svg" />
    </testGroup>

    <testGroup id="shapes">
        <test id="shapes-rect-BE-01.svg" />
        <test id="shapes-ellipse-BE-02.svg" />
        <test id="shapes-circle-BE-03.svg" />
        <test id="shapes-line-BE-04.svg" />
        <test id="shapes-polygon-BE-05.svg" />
        <test id="shapes-polyline-BE-06.svg" />
    </testGroup>

    <!-- =================================================================== -->
    <!-- Text                                                                -->
    <!-- =================================================================== -->
    <testGroup id="text">
        <test id="text-text-BE-01.svg" />
        <test id="text-tspan-BE-02.svg" />
        <test id="text-textOnPath-BE-03.svg" />
        <test id="text-tref-BE-04.svg" />
        <test id="text-textAnchor-BE-05.svg" />
        <test id="text-whiteSpace-BE-06.svg" />
        <test id="text-altGlyph-BE-07.svg" />
        <test id="text-i18n-BE-09.svg" />
        <test id="text-alignment-BE-10.svg" />
        <test id="text-alignment-BE-11.svg" />
        <test id="text-decoration-BE-12.svg" />
        <test id="text-selection-BE-13.svg" />
        <test id="text-spacing-BE-14.svg" />
        <test id="text-font-BE-15.svg" />
        <test id="text-font-BE-16.svg" />
        <test id="text-textLength-BE-17.svg" />
        <test id="text-extTref-BE-18.svg" />
    </testGroup>

    <!-- =================================================================== -->
    <!-- Paint                                                               -->
    <!-- =================================================================== -->
    <testGroup id="paint">
        <test id="paint-fill-BE-01.svg" />
        <test id="paint-stroke-BE-02.svg" />
        <test id="paint-markers-BE-03.svg" />
        <test id="paint-markers-BE-04.svg" />
        <test id="paint-colIntProp-BE-05.svg" />
        <test id="paint-inherit-BE-06.svg" />
    </testGroup>

    <!-- =================================================================== -->
    <!-- Color                                                               -->
    <!-- =================================================================== -->
    <testGroup id="color">
        <test id="color-datatypes-BE-01.svg" />
        <test id="color-property-BE-02.svg" />
        <test id="color-colorProf-BE-03.svg" />
    </testGroup>

    <!-- =================================================================== -->
    <!-- Gradient & Patterns                                                 -->
    <!-- =================================================================== -->
    <testGroup id="gradPatt">
        <test id="gradPatt-linearGr-BE-01.svg" />
        <test id="gradPatt-linearGr-BE-02.svg" />
        <test id="gradPatt-linearGr-BE-03.svg" />
        <test id="gradPatt-radialGr-BE-04.svg" />
        <test id="gradPatt-radialGr-BE-05.svg" />
        <test id="gradPatt-stop-BE-06.svg" />
        <test id="gradPatt-pattern-BE-07.svg" />
        <test id="gradPatt-referenc-BE-08.svg" />
        <test id="gradPatt-transfrm-BE-09.svg" />
        <test id="gradPatt-stop-BE-10.svg" />
    </testGroup>

    <!-- =================================================================== -->
    <!-- Cliping and masking                                                 -->
    <!-- =================================================================== -->
    <testGroup id="masking">
        <test id="masking-clipPath-BE-01.svg" />
        <test id="masking-clipPath-BE-02.svg" />
        <test id="masking-clipRule-BE-03.svg" />
        <test id="masking-groupOpac-BE-04.svg" />
        <test id="masking-mask-BE-05.svg" />
        <test id="masking-mask-BE-06.svg" />
        <test id="masking-property-BE-07.svg" />
        <test id="masking-clipPath-BE-08.svg" />
        <test id="masking-vportClip-BE-09.svg" />
    </testGroup>

    <!-- =================================================================== -->
    <!-- Filters                                                             -->
    <!-- =================================================================== -->
    <testGroup id="filters">
        <test id="filters-many-BE-01.svg" />
        <test id="filters-blend-BE-02.svg" />
        <test id="filters-colorMtrx-BE-03.svg" />
        <test id="filters-transfer-BE-04.svg" />
        <test id="filters-composite-BE-05.svg" />
        <test id="filters-convolve-BE-06.svg" />
        <test id="filters-diffuseLt-BE-07.svg" />
        <test id="filters-specularLt-BE-08.svg" />
        <test id="filters-lights-BE-09.svg" />
        <test id="filters-morph-BE-10.svg" />
        <test id="filters-turb-BE-11.svg" />
        <test id="filters-blur-BE-12.svg" />
        <test id="filters-feImage-BE-13.svg" />
        <test id="filters-feTile-BE-14.svg" />
        <test id="filters-fldMrgOff-BE-15.svg" />
        <test id="filters-dispMap-BE-16.svg" />
    </testGroup>

    <!-- =================================================================== -->
    <!-- Interactive SVG                                                     -->
    <!-- =================================================================== -->
    <!--
    <testGroup id="interact">
        <test id="interact-zoomPan-BE-01.svg" />
        <test id="interact-zoomPan-BE-02.svg" />
        <test id="interact-bubble-BE-04.svg" />
        <test id="interact-pEvents-BE-05.svg" />
        <test id="interact-pEvents-BE-06.svg" />
        <test id="interact-onload-BE-07.svg" />
        <test id="interact-cursor-BE-08.svg" />
    </testGroup>
    -->

    <!-- =================================================================== -->
    <!-- Linking                                                             -->
    <!-- =================================================================== -->
    <testGroup id="linking">
        <test id="linking-outBound-BE-01.svg" />
        <test id="linking-xlinkAttr-BE-02.svg" />
        <test id="linking-inBound-BE-03.svg" />
        <test id="linking-view-BE-04.svg" />
        <test id="linking-view-BE-05.svg" />
    </testGroup>

    <!-- =================================================================== -->
    <!-- Scripting                                                           -->
    <!-- =================================================================== -->
    <!--
    <testGroup id="script">
        <test id="script-eventDom-BE-01.svg" />
        <test id="script-uiEvents-BE-02.svg" />
    </testGroup>
    -->

    <!-- =================================================================== -->
    <!-- Animation                                                           -->
    <!-- =================================================================== -->
    <!--
    <testGroup id="animation">
        <test id="animation-overall-BE-01.svg" />
        <test id="animation-href-BE-02.svg" />
        <test id="animation-targElt-BE-03.svg" />
        <test id="animation-targAtt-BE-04.svg" />
        <test id="animation-timing-BE-05.svg" />
        <test id="animation-values-BE-06.svg" />
        <test id="animation-values-BE-07.svg" />
        <test id="animation-values-BE-08.svg" />
        <test id="animation-add-BE-09.svg" />
        <test id="animation-inherit-BE-10.svg" />
        <test id="animation-motion-BE-11.svg" />
        <test id="animation-motion-BE-12.svg" />
        <test id="animation-extRef-BE-13.svg" />
    </testGroup>
    -->

    <!-- =================================================================== -->
    <!-- Fonts                                                               -->
    <!-- =================================================================== -->    
    <testGroup id="fonts">
        <test id="fonts-fontElement-BE-01.svg" />
    </testGroup>

    <!-- =================================================================== -->
    <!-- Metadata                                                            -->
    <!-- =================================================================== -->
    <testGroup id="metadata">
        <test id="metadata-sample-BE-01.svg" >
            <property name="Validating" class="java.lang.Boolean" value="false" />
        </test>
    </testGroup>

    <!-- =================================================================== -->
    <!-- Multiple namespaces                                                 -->
    <!-- =================================================================== -->
    <testGroup id="extend">
        <test id="extend-multiNS-BE-01.svg" >
            <property name="Validating" class="java.lang.Boolean" value="false" />
        </test>
    </testGroup>

    <!-- =================================================================== -->
    <!-- DOM                                                                 -->
    <!-- =================================================================== -->
    <!--
    <testGroup id="dom">
        <test id="dom-core-BE-01.svg" />
        <test id="dom-svg-BE-02.svg" />
        <test id="dom-featureString-BE-03.svg" />
        <test id="dom-eventListener-BE-04.svg" />
    </testGroup>
    -->


</testSuite>
