files: {
"qunit": "qunit/qunit",
"require.js": "requirejs/require.js",
- "sinon/fake_timers.js": "sinon/lib/sinon/util/fake_timers.js"
+ "sinon/fake_timers.js": "sinon/lib/sinon/util/fake_timers.js",
+ "sinon/timers_ie.js": "sinon/lib/sinon/util/timers_ie.js"
}
}
},
<script src="libs/qunit/qunit.js"></script>
<script src="libs/require.js"></script>
<script src="libs/sinon/fake_timers.js"></script>
+ <script src="libs/sinon/timers_ie.js"></script>
<!-- See testinit for the list of tests -->
<script src="data/testinit.js"></script>
--- /dev/null
+/*global sinon, setTimeout, setInterval, clearTimeout, clearInterval, Date*/
+/**
+ * Helps IE run the fake timers. By defining global functions, IE allows
+ * them to be overwritten at a later point. If these are not defined like
+ * this, overwriting them will result in anything from an exception to browser
+ * crash.
+ *
+ * If you don't require fake timers to work in IE, don't include this file.
+ *
+ * @author Christian Johansen (christian@cjohansen.no)
+ * @license BSD
+ *
+ * Copyright (c) 2010-2013 Christian Johansen
+ */
+function setTimeout() {}
+function clearTimeout() {}
+function setInterval() {}
+function clearInterval() {}
+function Date() {}
+
+// Reassign the original functions. Now their writable attribute
+// should be true. Hackish, I know, but it works.
+setTimeout = sinon.timers.setTimeout;
+clearTimeout = sinon.timers.clearTimeout;
+setInterval = sinon.timers.setInterval;
+clearInterval = sinon.timers.clearInterval;
+Date = sinon.timers.Date;
return;
}
-var off = jQuery.fx.off;
+var off = jQuery.fx.off,
+ oldNow = jQuery.now;
module("effects", {
setup: function() {
this.clock = sinon.useFakeTimers( 505877050 );
this._oldInterval = jQuery.fx.interval;
jQuery.fx.interval = 10;
- jQuery.now = Date.now;
+ jQuery.now = function() {
+ return +( new Date() );
+ };
},
teardown: function() {
this.clock.restore();
- jQuery.now = Date.now;
+ jQuery.now = oldNow;
jQuery.fx.stop();
jQuery.fx.interval = this._oldInterval;
jQuery.fx.off = off;