<svg id="svg-root" width="100%" height="100%"
  viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
  xmlns:xlink="http://www.w3.org/1999/xlink">
  <!--======================================================================-->
  <!--=  Copyright 2008 World Wide Web Consortium, (Massachusetts          =-->
  <!--=  Institute of Technology, European Research Consortium for         =-->
  <!--=  Informatics and Mathematics (ERCIM), Keio University).            =-->
  <!--=  All Rights Reserved.                                              =-->
  <!--=  See http://www.w3.org/Consortium/Legal/.                          =-->
  <!--======================================================================-->
  <d:SVGTestCase xmlns:d="http://www.w3.org/2000/02/svg/testsuite/description/"
    template-version="1.3" reviewer="ED" author="CM" status="accepted"
    version="$Revision: 1.7 $" testname="$RCSfile: types-dom-04-b.svg,v $">
    <d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/svgdom.html#SVGDOMOverview">
      <p>
        This tests that SVG DOM objects that correspond to attributes
        are live.
        This is tested for interfaces
        SVGAnimatedNumberList, SVGAnimatedLength,
        SVGAnimatedLengthList, SVGAnimatedAngle, SVGAnimatedRect,
        SVGAnimatedTransformList, SVGAnimatedPreserveAspectRatio,
        SVGAnimatedBoolean, SVGAnimatedString, SVGAnimatedEnumeration,
        SVGAnimatedInteger and SVGAnimatedNumber.
      </p>
    </d:testDescription>
    <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
      <p>
        Run the test. No interaction required.
      </p>
    </d:operatorScript>
    <d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
      <p>
        Once loaded, the test shows 12 rectangles, one for
        each sub-test.  Each sub-test is checking that
        an SVG DOM object of a particular interface is live.
        The rectangle indicates the result of running the
        sub-test: black to indicate that it wasn't run,
        red to indicate that it failed, and green to indicate
        that it passed.
      </p>
      <p>
        The test is passed if all 12 rectangles are green.
      </p>
    </d:passCriteria>
  </d:SVGTestCase>
  <title id="test-title">$RCSfile: types-dom-04-b.svg,v $</title>
  <defs>
    <font-face
      font-family="SVGFreeSansASCII"
      unicode-range="U+0-7F">
      <font-face-src>
        <font-face-uri xlink:href="../custom/resources/SVGFreeSans.svg#ascii"/>
      </font-face-src>
    </font-face>
  </defs>
  <g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">

    <text x='10' y='30'>Testing liveness of SVG DOM objects</text>

    <g font-size='14' transform='translate(500)rotate(90)'>
      <rect id='r1' x='40' y='60' width='20' height='20'/>
      <text x='70' y='75'>SVGAnimatedNumberList</text>
      <rect id='r2' x='40' y='90' width='20' height='20'/>
      <text x='70' y='105'>SVGAnimatedLength</text>
      <rect id='r3' x='40' y='120' width='20' height='20'/>
      <text x='70' y='135'>SVGAnimatedLengthList</text>
      <rect id='r4' x='40' y='150' width='20' height='20'/>
      <text x='70' y='165'>SVGAnimatedAngle</text>
      <rect id='r5' x='40' y='180' width='20' height='20'/>
      <text x='70' y='195'>SVGAnimatedRect</text>
      <rect id='r6' x='40' y='210' width='20' height='20'/>
      <text x='70' y='225'>SVGAnimatedTransformList</text>
      <rect id='r7' x='40' y='240' width='20' height='20'/>
      <text x='70' y='255'>SVGAnimatedPreserveAspectRatio</text>
      <rect id='r8' x='40' y='270' width='20' height='20'/>
      <text x='70' y='285'>SVGAnimatedBoolean</text>
      <rect id='r9' x='40' y='300' width='20' height='20'/>
      <text x='70' y='315'>SVGAnimatedString</text>
      <rect id='r10' x='40' y='330' width='20' height='20'/>
      <text x='70' y='345'>SVGAnimatedEnumeration</text>
      <rect id='r11' x='40' y='360' width='20' height='20'/>
      <text x='70' y='375'>SVGAnimatedInteger</text>
      <rect id='r12' x='40' y='390' width='20' height='20'/>
      <text x='70' y='405'>SVGAnimatedNumber</text>
    </g>

    <g display='none'>
      <text id='text' rotate='0 20 40' x='10 20' lengthAdjust='spacing'>abc</text>
      <circle id='circle' r='50' transform='scale(1) scale(2)' class='one'/>
      <marker id='marker' orient='30'/>
      <svg id='svg' viewBox='10 20 30 40' preserveAspectRatio='none' externalResourcesRequired='false'/>
      <filter>
        <feTurbulence id='feTurbulence' baseFrequency='2 3' numOctaves='2'/>
      </filter>
    </g>

    <script><![CDATA[
      function $(id) { return document.getElementById(id); }

      var text = $('text'),
          circle = $('circle'),
          marker = $('marker'),
          svg = $('svg'),
          feTurbulence = $('feTurbulence');

      function expect_exception(id, fn, code) {
        try {
          fn();
        } catch (e) {
          if (e.code == code) {
            $(id).setAttribute('fill', 'green');
            return;
          }
        }
        $(id).setAttribute('fill', 'red');
      }

      function expect_value(id, fn, value) {
        try {
          if (fn() === value) {
            $(id).setAttribute('fill', 'green');
            return;
          }
        } catch (e) {
        }
        $(id).setAttribute('fill', 'red');
      }

      // SVGAnimatedNumberList: rotate on text
      expect_value
        ('r1',
         function() {
           return text.rotate.baseVal.numberOfItems == 3
               && (text.setAttribute('rotate', '0 20'), text.rotate.baseVal.numberOfItems == 2);
         },
         true);

      // SVGAnimatedLength: r on circle
      expect_value
        ('r2',
         function() {
           return circle.r.baseVal.value == 50
               && (circle.setAttribute('r', '100'), circle.r.baseVal.value == 100);
         },
         true);

      // SVGAnimatedLengthList: x on text
      expect_value
        ('r3',
         function() {
           return text.x.baseVal.numberOfItems == 2
               && (text.setAttribute('x', '10'), text.x.baseVal.numberOfItems == 1);
         },
         true);

      // SVGAnimatedAngle: orient on marker
      expect_value
        ('r4',
         function() {
           return marker.orientAngle.baseVal.value == 30
               && (marker.setAttribute('orient', '60'), marker.orientAngle.baseVal.value == 60);
         },
         true);

      // SVGAnimatedRect: viewBox on svg
      expect_value
        ('r5',
         function() {
           return svg.viewBox.baseVal.x == 10
               && (svg.setAttribute('viewBox', '20 30 40 50'), svg.viewBox.baseVal.x == 20);
         },
         true);

      // SVGAnimatedTransformList: transform on circle
      expect_value
        ('r6',
         function() {
           return circle.transform.baseVal.numberOfItems == 2
               && (circle.setAttribute('transform', 'scale(1)'), circle.transform.baseVal.numberOfItems == 1);
         },
         true);

      // SVGAnimatedPreserveAspectRatio: preserveAspectRatio on svg
      expect_value
        ('r7',
         function() {
           return svg.preserveAspectRatio.baseVal.align == 1 /* none */
               && (svg.setAttribute('preserveAspectRatio', 'xMidYMid'), svg.preserveAspectRatio.baseVal.align == 6);
         },
         true);

      // SVGAnimatedBoolean: externalResourcesRequired on svg
      expect_value
        ('r8',
         function() {
           return !svg.externalResourcesRequired.baseVal
               && (svg.setAttribute('externalResourcesRequired', 'true'), svg.externalResourcesRequired.baseVal);
         },
         true);

      // SVGAnimatedString: class on circle
      expect_value
        ('r9',
         function() {
           return circle.className.baseVal == 'one'
               && (circle.setAttribute('class', 'two'), circle.className.baseVal == 'two');
         },
         true);

      // SVGAnimatedEnumeration: lengthAdjust on text
      expect_value
        ('r10',
         function() {
           return text.lengthAdjust.baseVal == 1 /* spacing*/
               && (text.setAttribute('lengthAdjust', 'spacingAndGlyphs'), text.lengthAdjust.baseVal == 2);
         },
         true);

      // SVGAnimatedInteger: numOctaves on feTurbulence
      expect_value
        ('r11',
         function() {
           return feTurbulence.numOctaves.baseVal == 2
               && (feTurbulence.setAttribute('numOctaves', '1'), feTurbulence.numOctaves.baseVal == 1);
         },
         true);

      // SVGAnimatedNumber: baseFrequency on feTurbulence
      expect_value
        ('r12',
         function() {
           return feTurbulence.baseFrequencyY.baseVal == 3
               && (feTurbulence.setAttribute('baseFrequency', '4 5'), feTurbulence.baseFrequencyY.baseVal == 5);
         },
         true);
    ]]></script>

  </g>
  <g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
    <text id="revision" x="10" y="340" stroke="none"
      fill="black">$Revision: 1.7 $</text>
  </g>
  <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
  <!-- comment out this watermark once the test is approved --><!--
  <g id="draft-watermark">
    <rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
    <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
      text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
  </g>-->
</svg>
