UNPKG

sku-pg

Version:

Skulpt is a Javascript implementation of Python 2.x. Python that runs in your browser!

158 lines (128 loc) 4.67 kB
<!DOCTYPE html> <html> <!-- Copyright 2008 The Closure Library Authors. All Rights Reserved. Use of this source code is governed by an Apache 2.0 License. See the COPYING file for details. --> <!-- Author: arv@google.com (Erik Arvidsson) --> <head> <title>Closure Unit Tests - goog.fx</title> <script src="../base.js"></script> <script> goog.require('goog.Timer'); goog.require('goog.fx'); goog.require('goog.fx.Animation'); goog.require('goog.object'); goog.require('goog.testing.MockClock'); goog.require('goog.testing.PropertyReplacer'); goog.require('goog.testing.jsunit'); </script> <style> </style> </head> <body> <script> // TODO(user): Add tests for the event dispatches. // TODO(user): Add tests for the calculation of the coordinates. var clock, replacer, anim, anim2; var Animation = goog.fx.Animation; function setUpPage() { clock = new goog.testing.MockClock(true); } function tearDownPage() { clock.dispose(); } function setUp() { replacer = new goog.testing.PropertyReplacer(); } function tearDown() { replacer.reset(); if (anim && anim.dispose) { anim.dispose(); } if (anim2 && anim2.dispose) { anim2.dispose(); } } function testAnimationConstructor() { assertThrows('Should throw since first arg is not an array', function() { new Animation(1, [2], 3); }); assertThrows('Should throw since second arg is not an array', function() { new Animation([1], 2, 3); }); assertThrows('Should throw since the length are different', function() { new Animation([0, 1], [2], 3); }); } function testRegisterAndUnregisterAnimation() { var setTimoutCount = 0; var setIntervalCount = 0; var timerIdCounter = 1; replacer.set(goog.Timer.defaultTimerObject, 'setTimeout', function() { setTimoutCount++; return timerIdCounter++; }); replacer.set(goog.Timer.defaultTimerObject, 'setInterval', function() { setIntervalCount++; return timerIdCounter++; }); replacer.set(goog.Timer.defaultTimerObject, 'clearTimeout', function() { setTimoutCount--; }); replacer.set(Animation, 'globalTimer_', null); anim = new Animation([0], [1], 1000); anim2 = new Animation([0], [1], 1000); Animation.registerAnimation(anim); assertTrue('Should contain the animation', goog.object.containsValue(Animation.activeAnimations_, anim)); assertEquals('Should have called setTimout once', 1, setTimoutCount); assertEquals('setInterval should not be called', 0, setIntervalCount); Animation.registerAnimation(anim2); assertEquals('Should not have called setTimout again', 1, setTimoutCount); assertEquals('setInterval should not be called', 0, setIntervalCount); // Add anim again. Animation.registerAnimation(anim); assertTrue('Should contain the animation', goog.object.containsValue(Animation.activeAnimations_, anim)); assertEquals('Should not have called setTimout again', 1, setTimoutCount); assertEquals('setInterval should not be called', 0, setIntervalCount); Animation.unregisterAnimation(anim); assertFalse('Should not contain the animation', goog.object.containsValue(Animation.activeAnimations_, anim)); assertEquals('clearTimeout should not have been called', 1, setTimoutCount); assertEquals('setInterval should not be called', 0, setIntervalCount); Animation.unregisterAnimation(anim2); assertEquals('There should be no remaining timers', 0, setTimoutCount); assertEquals('setInterval should not be called', 0, setIntervalCount); // Make sure we don't trigger setTimeout or setInterval. clock.tick(1000); assertEquals('There should be no remaining timers', 0, setTimoutCount); assertEquals('setInterval should not be called', 0, setIntervalCount); } function testPlayAndStopDoesNotLeaveAnyActiveAnimations() { anim = new Animation([0], [1], 1000); assertTrue('There should be no active animations', goog.object.isEmpty(Animation.activeAnimations_)); anim.play(); assertEquals('There should be one active animations', 1, goog.object.getCount(Animation.activeAnimations_)); anim.stop(); assertTrue('There should be no active animations', goog.object.isEmpty(Animation.activeAnimations_)); anim.play(); assertEquals('There should be one active animations', 1, goog.object.getCount(Animation.activeAnimations_)); anim.pause(); assertTrue('There should be no active animations', goog.object.isEmpty(Animation.activeAnimations_)); } </script> </body> </html>