chromium/third_party/blink/web_tests/svg/W3C-SVG-1.1-SE/types-dom-04-b.svg

<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'/>
        <feConvolveMatrix id='feConvolveMatrix' kernelMatrix='1 1 1
															  1 1 1
															  1 1 1' preserveAlpha='false'/>
      </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>