<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="../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>
