<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'/>
      <filter>
        <feTurbulence id='feTurbulence' baseFrequency='2 3' numOctaves='2'/>
      </filter>
      <filter>
        <feConvolveMatrix id='feConvolveMatrix' order="1" kernelMatrix="1"/>
      </filter>
    </g>

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

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

      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: preserveAlpha on feConvolveMatrix
      expect_value
        ('r8',
         function() {
           return !feConvolveMatrix.preserveAlpha.baseVal
               && (feConvolveMatrix.setAttribute('preserveAlpha', 'true'), feConvolveMatrix.preserveAlpha.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>
