Previously, minFrameRate could not be set as option with the start method. The tests failed to catch this flaw. Now both the start method and the tests are fixed.
117 lines
3.7 KiB
HTML
117 lines
3.7 KiB
HTML
<html>
|
|
<head>
|
|
<script>
|
|
/**
|
|
* Because browsers that implement requestAnimationFrame may not execute
|
|
* animation functions while a window is not displayed (e.g. in a hidden
|
|
* iframe as in these tests), we mask the native implementations here. The
|
|
* native requestAnimationFrame functionality is tested in Util.html and
|
|
* in PanZoom.html (where a popup is opened before panning). The panTo tests
|
|
* here will test the fallback setTimeout implementation for animation.
|
|
*/
|
|
window.requestAnimationFrame =
|
|
window.webkitRequestAnimationFrame =
|
|
window.mozRequestAnimationFrame =
|
|
window.oRequestAnimationFrame =
|
|
window.msRequestAnimationFrame = null;
|
|
</script>
|
|
<script src="OLLoader.js"></script>
|
|
<script type="text/javascript">
|
|
|
|
function test_Tween_constructor(t) {
|
|
t.plan(3);
|
|
|
|
var tween = new OpenLayers.Tween();
|
|
t.ok(tween instanceof OpenLayers.Tween,
|
|
"new OpenLayers.Tween returns object" );
|
|
t.eq(typeof tween.easing, "function",
|
|
"constructor sets easing correctly");
|
|
t.eq(typeof tween.start, "function", "tween has a start function");
|
|
}
|
|
|
|
function test_Tween_start(t) {
|
|
t.plan(5);
|
|
|
|
var tween = new OpenLayers.Tween();
|
|
|
|
var start = {foo: 0, bar: 10};
|
|
var finish = {foo: 10, bar: 0};
|
|
var _start = false;
|
|
var _done = false;
|
|
var _eachStep = false;
|
|
var callbacks = {
|
|
start: function() {
|
|
_start = true;
|
|
},
|
|
done: function() {
|
|
_done = true;
|
|
},
|
|
eachStep: function() {
|
|
_eachStep = true;
|
|
}
|
|
}
|
|
tween.start(start, finish, 10, {callbacks: callbacks});
|
|
t.ok(tween.animationId != null, "animationId correctly set");
|
|
t.delay_call(0.8, function() {
|
|
t.eq(_start, true, "start callback called");
|
|
t.eq(_done, true, "finish callback called");
|
|
t.eq(_eachStep, true, "eachStep callback called");
|
|
t.eq(tween.time, 11, "Number of steps reached is correct");
|
|
});
|
|
}
|
|
|
|
function test_Tween_stop(t) {
|
|
t.plan(2);
|
|
|
|
var tween = new OpenLayers.Tween();
|
|
tween.animationId = OpenLayers.Animation.start(function() {});
|
|
tween.playing = true;
|
|
tween.stop();
|
|
t.eq(tween.animationId, null, "tween correctly stopped");
|
|
|
|
tween.animationId = OpenLayers.Animation.start(function() {});
|
|
tween.playing = false;
|
|
tween.stop();
|
|
t.ok(tween.animationId != null, "stop method doesn't do anything if tween isn't running");
|
|
}
|
|
|
|
function test_Tween_skip(t) {
|
|
t.plan(2);
|
|
|
|
var tween = new OpenLayers.Tween();
|
|
var log = 0;
|
|
tween.start({count: 0}, {count: 10}, 10, {
|
|
callbacks: {
|
|
eachStep: function() {
|
|
log++;
|
|
}
|
|
},
|
|
minFrameRate: 10000
|
|
});
|
|
|
|
t.delay_call(0.8, function() {
|
|
t.eq(log, 0, 'all frames skipped at a frame rate of 10000');
|
|
|
|
log = 0;
|
|
tween.start({count: 0}, {count: 10}, 10, {
|
|
callbacks: {
|
|
eachStep: function() {
|
|
log++;
|
|
}
|
|
},
|
|
minFrameRate: 1
|
|
});
|
|
});
|
|
|
|
t.delay_call(1.6, function() {
|
|
t.eq(log, 11, 'no frames skipped at a frame rate of 1');
|
|
});
|
|
}
|
|
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<div id="map" style="width:500px;height:500px"></div>
|
|
</body>
|
|
</html>
|