<!-- webkit-test-runner [ enableCSSAnimationsAndCSSTransitionsBackedByWebAnimations=true ] -->
<html>
<head>
  <style>

  svg * {
      -webkit-transition-property: fill, stroke, fill-opacity, stroke-opacity, stroke-width, stroke-dasharray, stroke-dashoffset, stroke-miterlimit, kerning, baseline-shift, flood-color, flood-opacity, stop-color, stop-opacity, lighting-color;
      -webkit-transition-duration: 2s;
      -webkit-transition-timing-function: linear;
  }

  #rect1 {
      fill: rgb(0, 0, 255);
      stroke: red;
      fill-opacity: 1;
      stroke-opacity: 1;
      stroke-width: 2;
      stroke-dashoffset: 0;
      stroke-dasharray: 10 10;
  }
  .animating #rect1 {
      fill: rgb(0, 255, 0);
      stroke: black;
      fill-opacity: 0.2;
      stroke-opacity: 0.2;
      stroke-width: 4;
      stroke-dashoffset: 10;
      stroke-dasharray: 20 20;
  }

  #rect2 {
      fill: rgb(0, 0, 255);
      stroke: rgb(255, 0, 0);
      stroke-dasharray: 10;
  }
  .animating #rect2 {
      fill: rgb(0, 255, 0);
      stroke: rgb(0, 0, 0);
      stroke-dasharray: 20 20;
  }

  #rect3 {
      fill: url(#gradient1);
  }
  .animating #rect3 {
      fill: url(#gradient2);
  }

  #stop1 {
      stop-color: rgb(255,0,0);
      stop-opacity: 1;
  }
  .animating #stop1 {
      stop-color: rgb(0,255,0);
      stop-opacity: 0.5;
  }

  #rect4 {
      stroke: red;
      stroke-width: 1px;
  }
  .animating #rect4 {
      stroke-width: 4mm;
  }

  #rect5 {
      stroke: black;
      stroke-width: 0;
      stroke-dasharray: none;
  }
  .animating #rect5 {
      stroke-width: 10px;
      stroke-dasharray: 20;
  }

  #rect6 {
      stroke: black;
      stroke-width: 10%;
      stroke-dasharray: 20 15;
  }
  .animating #rect6 {
      stroke-width: 20%;
      stroke-dasharray: 10 15 20;
  }

  #rect7 {
      fill: url(#invalid) black;
      stroke-dasharray: 20;
  }
  .animating #rect7 {
      fill: url(#invalid) blue;
      stroke-dasharray: none;
  }

  #polyline1 {
      fill: none;
      stroke: black;
      stroke-width: 4;
      stroke-miterlimit: 12;
  }
  .animating #polyline1 {
      stroke-miterlimit: 10;
  }

  #text1 {
      kerning: 0;
      baseline-shift: 0;
  }
  .animating #text1 {
      kerning: 10px;
      baseline-shift: 10px;
  }

  #flood1 {
      flood-opacity: 1;
      flood-color: rgb(255, 0, 0);
  }
  .animating #flood1 {
      flood-opacity: 0;
      flood-color: rgb(0, 255, 0);
  }

  #light1 {
      lighting-color: rgb(255, 0, 0);
  }
  .animating #light1 {
      lighting-color: rgb(0, 255, 0);
  }
  </style>
  <script src="resources/transition-test-helpers.js"></script>
  <script>
  const expectedValues = [
  // [time, element-id, property, expected-value, tolerance]
  [1, "rect1", "fill-opacity", 0.6, 0.1], // 1 -> 0.2
  [1, "rect1", "stroke-width", 3, 0.5],   // 2 -> 4
  [1, "rect1", "stroke-opacity", 0.6, 0.1], // 1 -> 0.2
  [1, "rect1", "stroke-dasharray", [15, 15], 1], // 10 -> 20
  [1, "rect1", "stroke-dashoffset", 5, 1], // 0 -> 10
  [1, "rect2", "stroke-dasharray", [15, 15], 1], // 10 -> 20
  [1, "rect4", "stroke-width", 8, 1],  // 1px to 4mm
  [1, "rect5", "stroke-width", 5, 1],  // 0 to 10px
  [1, "rect5", "stroke-dasharray", [20], 1], // 20 at half time
  [1, "rect6", "stroke-width", 15, 2],  // 10% to 20%
  [1, "rect6", "stroke-dasharray", [15, 15, 20, 12.5, 17.5, 17.5], 1], // 20 -> 10, 15 -> 15, 20 -> 20, 15 -> 10, 20 -> 15, 15 -> 20
  [1, "rect7", "stroke-dasharray", "none", 1], // none at half time
  [1, "stop1", "stop-color", [127, 127, 0], 20], // rgb(255,0,0) -> rgb(0, 255, 0)
  [1, "stop1", "stop-opacity", 0.75, 0.1], // 1 -> 0.5
  [1, "polyline1", "stroke-miterlimit", 11, 0.5], // 12 -> 10 (this is an abrupt change in rendering even though the property animation is smooth)
  [1, "text1", "kerning", 5, 1], // 0 -> 10px
  [1, "text1", "baseline-shift", 5, 1], // 0 -> 10px
  [1, "flood1", "flood-opacity", 0.5, 0.1], // 1 -> 0
  [1, "flood1", "flood-color", [127, 127, 0], 20], // rgb(0, 255, 0) -> rgb(255, 0, 0)
  [1, "light1", "lighting-color", [127, 127, 0], 20], // rgb(255, 0, 0) -> rgb(0, 255, 0)
  ];
    
  function setupTest()
  {
      document.getElementById('container').className = 'animating';
  }

  runTransitionTest(expectedValues, setupTest, usePauseAPI);
  </script>
</head>
<body>

<div id="container">
  <svg viewBox="0 0 160 120" width="400px" height="300px">
    <defs>
      <linearGradient id="gradient1">
        <stop id="stop1" offset="5%"/>
        <stop offset="95%" stop-color="rgb(0,0,255)" />
      </linearGradient>
      <linearGradient id="gradient2">
        <stop offset="10%" stop-color="rgb(0,255,255)" />
        <stop offset="95%" stop-color="rgb(255, 0,255)" />
      </linearGradient>
      <filter id="filter1">
        <feFlood id="flood1"/>
        <feDiffuseLighting id="light1"/>
      </filter>
    </defs>
    <rect id="rect1" x="10" y="10" width="30" height="30"/>
    <rect id="rect2" x="90" y="10" width="30" height="30"/>
    <rect id="rect3" x="90" y="60" width="30" height="20"/>
    <rect id="rect4" x="10" y="100" width="10" height="10"/>
    <rect id="rect5" x="50" y="100" width="10" height="10"/>
    <rect id="rect6" x="90" y="100" width="10" height="10"/>
    <rect id="rect7" x="130" y="100" width="10" height="10"/>
    <polyline id="polyline1" points="10,70 60,75 10,80"/>
    <text id="text1" x="100" y="60">Example</text>
  </svg>
</div>

<div id="result"></div>

</body>
</html>
