diff options
Diffstat (limited to 'misc/openlayers/tests/Tween.html')
-rw-r--r-- | misc/openlayers/tests/Tween.html | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/misc/openlayers/tests/Tween.html b/misc/openlayers/tests/Tween.html new file mode 100644 index 0000000..1fbfa3c --- /dev/null +++ b/misc/openlayers/tests/Tween.html @@ -0,0 +1,116 @@ +<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> |