Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  test_smilTimingZeroIntervals.xhtml   Sprache: unbekannt

 
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Test for SMIL timing with zero-duration intervals</title>
  <script src="/tests/SimpleTest/SimpleTest.js"></script>
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
<p id="display"></p>
<div id="content">
<svg id="svg" xmlns="http://www.w3.org/2000/svg" width="120px" height="120px"
     onload="this.pauseAnimations()">
  <circle cx="-100" cy="20" r="15" fill="blue" id="circle"/>
</svg>
</div>
<pre id="test">
<script class="testbody" type="text/javascript">
<![CDATA[
/** Test for SMIL timing with zero-duration intervals **/

/* Global Variables */
const svgns="http://www.w3.org/2000/svg";
var svg = document.getElementById("svg");
var circle = document.getElementById('circle');

SimpleTest.waitForExplicitFinish();

function createAnim() {
  var anim = document.createElementNS(svgns,'animate');
  anim.setAttribute('attributeName','cx');
  anim.setAttribute('from','0');
  anim.setAttribute('to','100');
  anim.setAttribute('dur','10s');
  anim.setAttribute('begin','indefinite');
  return circle.appendChild(anim);
}

function removeAnim(anim) {
  anim.remove();
}

function main() {
  ok(svg.animationsPaused(), "should be paused by <svg> load handler");
  is(svg.getCurrentTime(), 0, "should be paused at 0 in <svg> load handler");

  var tests =
    [ testZeroDurationIntervalsA,
      testZeroDurationIntervalsB,
      testZeroDurationIntervalsC,
      testZeroDurationIntervalsD,
      testZeroDurationIntervalsE,
      testZeroDurationIntervalsF,
      testZeroDurationIntervalsG,
      testZeroDurationIntervalsH,
      testZeroDurationIntervalsI,
      testZeroDurationIntervalsJ,
      testZeroDurationIntervalsK,
      testZeroDurationIntervalsL,
      testZeroDurationIntervalsM,
      testZeroDurationIntervalsN,
      testZeroDurationIntervalsO
    ];
  for (var i = 0; i < tests.length; i++) {
    var anim = createAnim();
    svg.setCurrentTime(0);
    tests[i](anim);
    removeAnim(anim);
  }
  SimpleTest.finish();
}

function checkSample(time, expectedValue) {
  svg.setCurrentTime(time);
  is(circle.cx.animVal.value, expectedValue);
}

function testZeroDurationIntervalsA(anim) {
  // The zero-duration interval should play, followed by a second interval
  // starting at the same point. There is no end for the interval
  // at 4s so it should not play.
  anim.setAttribute('begin', '1s ;4s');
  anim.setAttribute('end', '1s; 2s');
  anim.setAttribute('dur', '2s ');
  anim.setAttribute('fill', 'freeze');
  checkSample(0,-100);
  checkSample(1,0);
  checkSample(1.1,5);
  checkSample(2,50);
  checkSample(3,50);
  checkSample(4,50);
  checkSample(5,50);
  checkSample(6,50);
}

function testZeroDurationIntervalsB(anim) {
  // This interval should however actually restart as there is a valid end-point
  anim.setAttribute('begin', '1s ;4s');
  anim.setAttribute('end', '1.1s; indefinite');
  anim.setAttribute('dur', '2s ');
  anim.setAttribute('fill', 'freeze');
  checkSample(0,-100);
  checkSample(1,0);
  checkSample(1.1,5);
  checkSample(2,5);
  checkSample(4,0);
  checkSample(5,50);
}

function testZeroDurationIntervalsC(anim) {
  // -0.5s has already been used as the endpoint of one interval so don't use it
  // a second time
  anim.setAttribute('begin', '-2s; -0.5s');
  anim.setAttribute('end', '-0.5s; 1s');
  anim.setAttribute('dur', '2s');
  anim.setAttribute('fill', 'freeze');
  checkSample(0,25);
  checkSample(1.5,75);
}

function testZeroDurationIntervalsD(anim) {
  // Two end points that could make a zero-length interval
  anim.setAttribute('begin', '-2s; -0.5s');
  anim.setAttribute('end', '-0.5s; -0.5s; 1s');
  anim.setAttribute('dur', '2s');
  anim.setAttribute('fill', 'freeze');
  checkSample(0,25);
  checkSample(1.5,75);
}

function testZeroDurationIntervalsE(anim) {
  // Should give us 1s-1s, 1s-5s
  anim.setAttribute('begin', '1s');
  anim.setAttribute('end', '1s; 5s');
  anim.setAttribute('fill', 'freeze');
  is(anim.getStartTime(),1);
  checkSample(0,-100);
  checkSample(1,0);
  checkSample(6,40);
}

function testZeroDurationIntervalsF(anim) {
  // Should give us 1s-1s
  anim.setAttribute('begin', '1s');
  anim.setAttribute('end', '1s');
  anim.setAttribute('fill', 'freeze');
  is(anim.getStartTime(),1);
  checkSample(0,-100);
  checkSample(1,0);
  checkSample(2,0);
  try {
    anim.getStartTime();
    ok(false, "Failed to throw exception when there's no current interval.");
  } catch (e) { }
}

function testZeroDurationIntervalsG(anim) {
  // Test a non-zero interval after a zero interval
  // Should give us 1-2s, 3-3s, 3-4s
  anim.setAttribute('begin', '1s; 3s');
  anim.setAttribute('end', '3s; 5s');
  anim.setAttribute('dur', '1s');
  anim.setAttribute('fill', 'freeze');
  checkSample(0,-100);
  checkSample(1,0);
  checkSample(2,100);
  checkSample(3,0);
  checkSample(5,100);
}

function testZeroDurationIntervalsH(anim) {
  // Test multiple non-adjacent zero-intervals
  // Should give us 1-1s, 1-2s, 3-3s, 3-4s
  anim.setAttribute('begin', '1s; 3s');
  anim.setAttribute('end', '1s; 3s; 5s');
  anim.setAttribute('dur', '1s');
  anim.setAttribute('fill', 'freeze');
  checkSample(0,-100);
  checkSample(1,0);
  checkSample(2,100);
  checkSample(3,0);
  checkSample(5,100);
}

function testZeroDurationIntervalsI(anim) {
  // Test skipping values that are the same
  // Should give us 1-1s, 1-2s
  anim.setAttribute('begin', '1s; 1s');
  anim.setAttribute('end', '1s; 1s; 2s');
  anim.setAttribute('fill', 'freeze');
  is(anim.getStartTime(),1);
  checkSample(0,-100);
  checkSample(1,0);
  checkSample(2,10);
  checkSample(3,10);
}

function testZeroDurationIntervalsJ(anim) {
  // Should give us 0-0.5s, 1-1s, 1-3s
  anim.setAttribute('begin', '0s; 1s; 1s');
  anim.setAttribute('end', '1s; 3s');
  anim.setAttribute('dur', '0.5s');
  anim.setAttribute('fill', 'freeze');
  is(anim.getStartTime(),0);
  checkSample(0,0);
  checkSample(0.6,100);
  checkSample(1,0);
  checkSample(2,100);
}

function testZeroDurationIntervalsK(anim) {
  // Should give us -0.5-1s
  anim.setAttribute('begin', '-0.5s');
  anim.setAttribute('end', '-0.5s; 1s');
  anim.setAttribute('fill', 'freeze');
  is(anim.getStartTime(),-0.5);
  checkSample(0,5);
  checkSample(1,15);
  checkSample(2,15);
}

function testZeroDurationIntervalsL(anim) {
  // Test that multiple end values are ignored
  // Should give us 1-1s, 1-3s
  anim.setAttribute('begin', '1s');
  anim.setAttribute('end', '1s; 1s; 1s; 3s');
  anim.setAttribute('fill', 'freeze');
  is(anim.getStartTime(),1);
  checkSample(0,-100);
  checkSample(1,0);
  checkSample(2,10);
  checkSample(4,20);
}

function testZeroDurationIntervalsM(anim) {
  // Test 0-duration interval at start
  anim.setAttribute('begin', '0s');
  anim.setAttribute('end', '0s');
  anim.setAttribute('fill', 'freeze');
  try {
    anim.getStartTime();
    ok(false, "Failed to throw exception when there's no current interval.");
  } catch (e) { }
  checkSample(0,0);
  checkSample(1,0);
}

function testZeroDurationIntervalsN(anim) {
  // Test 0-active-duration interval at start (different code path to above)
  anim.setAttribute('begin', '0s');
  anim.setAttribute('repeatDur', '0s');
  anim.setAttribute('fill', 'freeze');
  try {
    anim.getStartTime();
    ok(false, "Failed to throw exception when there's no current interval.");
  } catch (e) { }
  checkSample(0,0);
  checkSample(1,0);
}

function testZeroDurationIntervalsO(anim) {
  // Make a zero-duration interval by constraining the active duration
  // We should not loop infinitely but should look for the next begin time after
  // that (in this case that is 2s, which would otherwise have been skipped
  // because restart=whenNotActive)
  // Should give us 1-1s, 2-2s
  anim.setAttribute('begin', '1s; 2s');
  anim.setAttribute('repeatDur', '0s');
  anim.setAttribute('restart', 'whenNotActive');
  anim.setAttribute('fill', 'freeze');
  is(anim.getStartTime(),1);
  checkSample(0,-100);
  checkSample(1,0);
  checkSample(1.5,0);
  checkSample(3,0);
  try {
    anim.getStartTime();
    ok(false, "Failed to throw exception when there's no current interval.");
  } catch (e) { }
}

window.addEventListener("load", main);
]]>
</script>
</pre>
</body>
</html>

[ Dauer der Verarbeitung: 0.28 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge