88 lines
2.5 KiB
JavaScript
88 lines
2.5 KiB
JavaScript
suite('group-player-finish-event', function() {
|
|
setup(function() {
|
|
document.timeline.currentTime = undefined;
|
|
this.element = document.createElement('div');
|
|
document.documentElement.appendChild(this.element);
|
|
var animation = new AnimationSequence([
|
|
new Animation(this.element, [], 500),
|
|
new AnimationGroup([
|
|
new Animation(this.element, [], 250),
|
|
new Animation(this.element, [], 500),
|
|
]),
|
|
]);
|
|
this.player = document.timeline.play(animation, 1000);
|
|
});
|
|
teardown(function() {
|
|
if (this.element.parent)
|
|
this.element.removeChild(this.element);
|
|
});
|
|
|
|
test('fire when player completes', function(done) {
|
|
var ready = false;
|
|
var fired = false;
|
|
var player = this.player;
|
|
player.onfinish = function(event) {
|
|
assert(ready, 'must not be called synchronously');
|
|
assert.equal(this, player);
|
|
assert.equal(event.target, player);
|
|
assert.equal(event.currentTime, 1000);
|
|
assert.equal(event.timelineTime, 1100);
|
|
if (fired)
|
|
assert(false, 'must not get fired twice');
|
|
fired = true;
|
|
done();
|
|
};
|
|
tick(100);
|
|
tick(1100);
|
|
tick(2100);
|
|
ready = true;
|
|
});
|
|
|
|
test('fire when reversed player completes', function(done) {
|
|
this.player.onfinish = function(event) {
|
|
assert.equal(event.currentTime, 0);
|
|
assert.equal(event.timelineTime, 1001);
|
|
done();
|
|
};
|
|
tick(0);
|
|
tick(500);
|
|
this.player.reverse();
|
|
tick(501);
|
|
tick(1001);
|
|
});
|
|
|
|
test('fire after player is cancelled', function(done) {
|
|
this.player.onfinish = function(event) {
|
|
assert.equal(event.currentTime, 0);
|
|
assert.equal(event.timelineTime, 1, 'event must be fired on next sample');
|
|
done();
|
|
};
|
|
tick(0);
|
|
this.player.cancel();
|
|
tick(1);
|
|
});
|
|
|
|
test('multiple event listeners', function(done) {
|
|
var count = 0;
|
|
function createHandler(expectedCount) {
|
|
return function() {
|
|
count++;
|
|
assert.equal(count, expectedCount);
|
|
};
|
|
}
|
|
var toRemove = createHandler(0);
|
|
this.player.addEventListener('finish', createHandler(1));
|
|
this.player.addEventListener('finish', createHandler(2));
|
|
this.player.addEventListener('finish', toRemove);
|
|
this.player.addEventListener('finish', createHandler(3));
|
|
this.player.removeEventListener('finish', toRemove);
|
|
this.player.onfinish = function() {
|
|
assert.equal(count, 3);
|
|
done();
|
|
};
|
|
tick(0);
|
|
this.player.cancel();
|
|
tick(1000);
|
|
});
|
|
});
|