aboutsummaryrefslogtreecommitdiff
path: root/contexts/data/lib/closure-library/closure/goog/testing/mockclock_test.html
diff options
context:
space:
mode:
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/testing/mockclock_test.html')
-rw-r--r--contexts/data/lib/closure-library/closure/goog/testing/mockclock_test.html488
1 files changed, 0 insertions, 488 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/testing/mockclock_test.html b/contexts/data/lib/closure-library/closure/goog/testing/mockclock_test.html
deleted file mode 100644
index 39e367f..0000000
--- a/contexts/data/lib/closure-library/closure/goog/testing/mockclock_test.html
+++ /dev/null
@@ -1,488 +0,0 @@
-<!DOCTYPE html>
-<html>
-<!--
-Copyright 2007 The Closure Library Authors. All Rights Reserved.
-
-Use of this source code is governed by the Apache License, Version 2.0.
-See the COPYING file for details.
--->
-<head>
-<meta http-equiv="X-UA-Compatible" content="IE=edge">
-<title>Closure Unit Tests - goog.testing.MockClock</title>
-<script src="../base.js"></script>
-<script>
- goog.require('goog.events');
- goog.require('goog.functions');
- goog.require('goog.testing.MockClock');
- goog.require('goog.testing.PropertyReplacer');
- goog.require('goog.testing.jsunit');
- goog.require('goog.testing.recordFunction');
-</script>
-</head>
-<body>
-<script>
- var stubs = new goog.testing.PropertyReplacer();
-
- function tearDown() {
- stubs.reset();
- }
-
- function testMockClockWasInstalled() {
- var clock = new goog.testing.MockClock();
- var originalTimeout = window.setTimeout;
- clock.install();
- assertNotEquals(window.setTimeout, originalTimeout);
- setTimeout(function() {}, 100);
- assertEquals(1, clock.getTimeoutsMade());
- setInterval(function() {}, 200);
- assertEquals(2, clock.getTimeoutsMade());
- clock.uninstall();
- assertEquals(window.setTimeout, originalTimeout);
- assertNull(clock.replacer_);
- }
-
-
- function testSetTimeoutAndTick() {
- var clock = new goog.testing.MockClock(true);
- var m5 = false, m10 = false, m15 = false, m20 = false;
- setTimeout(function() { m5 = true; }, 5);
- setTimeout(function() { m10 = true; }, 10);
- setTimeout(function() { m15 = true; }, 15);
- setTimeout(function() { m20 = true; }, 20);
- assertEquals(4, clock.getTimeoutsMade());
-
- assertEquals(4, clock.tick(4));
- assertEquals(4, clock.getCurrentTime());
-
- assertFalse(m5);
- assertFalse(m10);
- assertFalse(m15);
- assertFalse(m20);
-
- assertEquals(5, clock.tick(1));
- assertEquals(5, clock.getCurrentTime());
-
- assertTrue('m5 should now be true', m5);
- assertFalse(m10);
- assertFalse(m15);
- assertFalse(m20);
-
- assertEquals(10, clock.tick(5));
- assertEquals(10, clock.getCurrentTime());
-
- assertTrue('m5 should be true', m5);
- assertTrue('m10 should now be true', m10);
- assertFalse(m15);
- assertFalse(m20);
-
- assertEquals(15, clock.tick(5));
- assertEquals(15, clock.getCurrentTime());
-
- assertTrue('m5 should be true', m5);
- assertTrue('m10 should be true', m10);
- assertTrue('m15 should now be true', m15);
- assertFalse(m20);
-
- assertEquals(20, clock.tick(5));
- assertEquals(20, clock.getCurrentTime());
-
- assertTrue('m5 should be true', m5);
- assertTrue('m10 should be true', m10);
- assertTrue('m15 should be true', m15);
- assertTrue('m20 should now be true', m20);
-
- clock.uninstall();
- }
-
-
- function testSetInterval() {
- var clock = new goog.testing.MockClock(true);
- var times = 0
- setInterval(function() { times++; }, 100);
-
- clock.tick(500);
- assertEquals(5, times);
- clock.tick(100);
- assertEquals(6, times);
- clock.tick(100);
- assertEquals(7, times);
- clock.tick(50);
- assertEquals(7, times);
- clock.tick(50);
- assertEquals(8, times);
-
- clock.uninstall();
- }
-
-
- function testRequestAnimationFrame() {
- goog.global.requestAnimationFrame = function () {
- };
- var clock = new goog.testing.MockClock(true);
- var times = [];
- var recFunc = goog.testing.recordFunction(function(now) {
- times.push(now);
- });
- goog.global.requestAnimationFrame(recFunc);
- clock.tick(50);
- assertEquals(1, recFunc.getCallCount());
- assertEquals(20, times[0]);
-
- goog.global.requestAnimationFrame(recFunc);
- clock.tick(100);
- assertEquals(2, recFunc.getCallCount());
- assertEquals(70, times[1]);
-
- clock.uninstall();
- }
-
-
- function testClearTimeout() {
- var clock = new goog.testing.MockClock(true);
- var ran = false;
- var c = setTimeout(function() { ran = true; }, 100);
- clock.tick(50);
- assertFalse(ran);
- clearTimeout(c);
- clock.tick(100);
- assertFalse(ran);
- clock.uninstall();
- }
-
-
- function testClearInterval() {
- var clock = new goog.testing.MockClock(true);
- var times = 0
- var c = setInterval(function() { times++; }, 100);
-
- clock.tick(500);
- assertEquals(5, times);
- clock.tick(100);
- assertEquals(6, times);
- clock.tick(100);
- clearInterval(c);
- assertEquals(7, times);
- clock.tick(50);
- assertEquals(7, times);
- clock.tick(50);
- assertEquals(7, times);
-
- clock.uninstall();
- }
-
-
- function testClearInterval2() {
- // Tests that we can clear the interval from inside the function
- var clock = new goog.testing.MockClock(true);
- var times = 0
- var c = setInterval(function() {
- times++;
- if (times == 6) {
- clearInterval(c);
- }
- }, 100);
-
- clock.tick(500);
- assertEquals(5, times);
- clock.tick(100);
- assertEquals(6, times);
- clock.tick(100);
- assertEquals(6, times);
- clock.tick(50);
- assertEquals(6, times);
- clock.tick(50);
- assertEquals(6, times);
-
- clock.uninstall();
- }
-
-
- function testCancelRequestAnimationFrame() {
- goog.global.requestAnimationFrame = function () {
- };
- goog.global.cancelRequestAnimationFrame = function () {
- };
- var clock = new goog.testing.MockClock(true);
- var ran = false;
- var c = goog.global.requestAnimationFrame(function() { ran = true; });
- clock.tick(10);
- assertFalse(ran);
- goog.global.cancelRequestAnimationFrame(c);
- clock.tick(20);
- assertFalse(ran);
- clock.uninstall();
- }
-
-
- function testMockGoogNow() {
- assertNotEquals(0, goog.now());
- var clock = new goog.testing.MockClock(true);
- assertEquals(0, goog.now());
- clock.tick(50);
- assertEquals(50, goog.now());
- clock.uninstall();
- assertNotEquals(50, goog.now());
- }
-
-
- function testTimeoutDelay() {
- var clock = new goog.testing.MockClock(true);
- var m5 = false, m10 = false, m20 = false;
- setTimeout(function() { m5 = true; }, 5);
- setTimeout(function() { m10 = true; }, 10);
- setTimeout(function() { m20 = true; }, 20);
-
- // Fire 3ms early, so m5 fires at t=2
- clock.setTimeoutDelay(-3);
- clock.tick(1);
- assertFalse(m5);
- assertFalse(m10);
- clock.tick(1);
- assertTrue(m5);
- assertFalse(m10);
-
- // Fire 3ms late, so m10 fires at t=13
- clock.setTimeoutDelay(3);
- assertEquals(12, clock.tick(10));
- assertEquals(12, clock.getCurrentTime());
- assertFalse(m10);
- clock.tick(1);
- assertTrue(m10);
- assertFalse(m20);
-
- // Fire 10ms early, so m20 fires now, since it's after t=10
- clock.setTimeoutDelay(-10);
- assertFalse(m20);
- assertEquals(14, clock.tick(1));
- assertEquals(14, clock.getCurrentTime());
- assertTrue(m20);
-
- clock.uninstall();
- }
-
-
- function testTimerCallbackCanCreateIntermediateTimer() {
- var clock = new goog.testing.MockClock(true);
- var sequence = [];
-
- // Create 3 timers: 1, 2, and 3. Timer 1 should fire at T=1, timer 2 at
- // T=2, and timer 3 at T=3. The catch: Timer 2 is created by the
- // callback within timer 0.
-
- // Testing method: Create a simple string sequencing each timer and at
- // what time it fired.
-
- setTimeout(function() {
- sequence.push('timer1 at T=' + goog.now());
- setTimeout(function() {
- sequence.push('timer2 at T=' + goog.now());
- }, 1);
- }, 1);
-
- setTimeout(function() {
- sequence.push('timer3 at T=' + goog.now());
- }, 3);
-
- clock.tick(4);
-
- assertEquals(
- 'Each timer should fire in sequence at the correct time.',
- 'timer1 at T=1, timer2 at T=2, timer3 at T=3',
- sequence.join(', '));
-
- clock.uninstall();
- }
-
-
- function testCorrectArgumentsPassedToCallback() {
- var clock = new goog.testing.MockClock(true);
- var timeoutId;
- var timeoutExecuted = false;
-
- timeoutId = setTimeout(function(arg) {
- assertEquals('"this" must be goog.global',
- goog.global, this);
- assertEquals('The timeout ID must be the first parameter',
- timeoutId, arg);
- assertEquals('Exactly one argument must be passed',
- 1, arguments.length);
- timeoutExecuted = true;
- }, 1);
-
- clock.tick(4);
-
- assertTrue('The timeout was not executed', timeoutExecuted);
-
- clock.uninstall();
- }
-
-
- function testTickZero() {
- var clock = new goog.testing.MockClock(true);
- var calls = 0;
-
- setTimeout(function() {
- assertEquals('I need to be first', 0, calls);
- calls++;
- }, 0);
-
- setTimeout(function() {
- assertEquals('I need to be second', 1, calls);
- calls++;
- }, 0);
-
- clock.tick(0);
- assertEquals(2, calls);
-
- setTimeout(function() {
- assertEquals('I need to be third', 2, calls);
- calls++;
- }, 0);
-
- clock.tick(0);
- assertEquals(3, calls);
-
- assertEquals('Time should still be zero', 0, goog.now());
-
- clock.uninstall();
- }
-
-
- function testReset() {
- var clock = new goog.testing.MockClock(true);
-
- setTimeout(function() {
- fail('Timeouts should be cleared after a reset');
- }, 0);
-
- clock.reset();
- clock.tick(999999);
- clock.uninstall();
- }
-
-
- function testQueueInsertionHelper() {
- var queue = [];
-
- function queueToString() {
- var buffer = [];
- for (var i = 0; i < queue.length; i++) {
- buffer.push(queue[i].runAtMillis);
- }
- return buffer.join(',');
- }
-
- goog.testing.MockClock.insert_({runAtMillis: 2}, queue);
- assertEquals('Only item',
- '2', queueToString());
-
- goog.testing.MockClock.insert_({runAtMillis: 4}, queue);
- assertEquals('Biggest item',
- '4,2', queueToString());
-
- goog.testing.MockClock.insert_({runAtMillis: 5}, queue);
- assertEquals('An even bigger item',
- '5,4,2', queueToString());
-
- goog.testing.MockClock.insert_({runAtMillis: 1}, queue);
- assertEquals('Smallest item',
- '5,4,2,1', queueToString());
-
- goog.testing.MockClock.insert_({runAtMillis: 1, dup: true}, queue);
- assertEquals('Duplicate smallest item',
- '5,4,2,1,1', queueToString());
- assertTrue('Duplicate item comes at a smaller index', queue[3].dup);
-
- goog.testing.MockClock.insert_({runAtMillis: 3}, queue);
- goog.testing.MockClock.insert_({runAtMillis: 3, dup:true}, queue);
- assertEquals('Duplicate a middle item',
- '5,4,3,3,2,1,1', queueToString());
- assertTrue('Duplicate item comes at a smaller index', queue[2].dup);
- }
-
- function testIsTimeoutSet() {
- var clock = new goog.testing.MockClock(true);
- var timeoutKey = setTimeout(function(){}, 1);
- assertTrue('Timeout ' + timeoutKey + ' should be set',
- clock.isTimeoutSet(timeoutKey));
- var nextTimeoutKey = timeoutKey + 1;
- assertFalse('Timeout ' + nextTimeoutKey + ' should not be set',
- clock.isTimeoutSet(nextTimeoutKey));
- clearTimeout(timeoutKey);
- assertFalse('Timeout ' + timeoutKey + ' should no longer be set',
- clock.isTimeoutSet(timeoutKey));
- var newTimeoutKey = setTimeout(function(){}, 1);
- clock.tick(5);
- assertFalse('Timeout ' + timeoutKey + ' should not be set',
- clock.isTimeoutSet(timeoutKey));
- assertTrue('Timeout ' + newTimeoutKey + ' should be set',
- clock.isTimeoutSet(newTimeoutKey));
- clock.uninstall();
- }
-
- function testBalksOnTimeoutsGreaterThanMaxInt() {
- // Browsers have trouble with timeout greater than max int, so we
- // want Mock Clock to fail if this happens.
- var clock = new goog.testing.MockClock(true);
- // Functions on window don't seem to be able to throw exceptions in
- // IE6. Explicitly reading the property makes it work.
- var setTimeout = window.setTimeout;
- assertThrows('Timeouts > MAX_INT should fail',
- function() {
- setTimeout(goog.nullFunction, 2147483648);
- });
- assertThrows('Timeouts much greater than MAX_INT should fail',
- function() {
- setTimeout(goog.nullFunction, 2147483648 * 10);
- });
- clock.uninstall();
- }
-
- function testCorrectSetTimeoutIsRestored() {
- var safe = goog.functions.error('should not have been called');
- stubs.set(window, 'setTimeout', safe);
-
- var clock = new goog.testing.MockClock(true);
- assertNotEquals('setTimeout is replaced', safe, window.setTimeout);
- clock.uninstall();
- // NOTE: If this assertion proves to be flaky in IE, the string value of
- // the two functions have to be compared as described in
- // goog.testing.TestCase#finalize.
- assertEquals('setTimeout is restored', safe, window.setTimeout);
- }
-
- function testMozRequestAnimationFrame() {
- // Setting this function will indirectly tell the mock clock to mock it out.
- stubs.set(window, 'mozRequestAnimationFrame', goog.nullFunction);
-
- var clock = new goog.testing.MockClock(true);
-
- var mozBeforePaint = goog.testing.recordFunction();
- goog.events.listen(window, 'MozBeforePaint', mozBeforePaint);
-
- window.mozRequestAnimationFrame(null);
- assertEquals(0, mozBeforePaint.getCallCount());
-
- clock.tick(goog.testing.MockClock.REQUEST_ANIMATION_FRAME_TIMEOUT);
- assertEquals(1, mozBeforePaint.getCallCount());
- clock.dispose();
- }
-
- function testClearBeforeSet() {
- var clock = new goog.testing.MockClock(true);
- var expectedId = 1;
- window.clearTimeout(expectedId);
-
- var fn = goog.testing.recordFunction();
- var actualId = window.setTimeout(fn, 0);
- assertEquals(
- 'In order for this test to work, we have to guess the ids in advance',
- expectedId, actualId);
- clock.tick(1);
- assertEquals(1, fn.getCallCount());
- clock.dispose();
- }
-
-</script>
-</body>
-</html>