test: add setTimeout/setInterval multi-arg tests
authorBen Noordhuis <info@bnoordhuis.nl>
Fri, 20 Mar 2015 16:35:52 +0000 (17:35 +0100)
committerBen Noordhuis <info@bnoordhuis.nl>
Fri, 20 Mar 2015 22:42:27 +0000 (23:42 +0100)
It turns out we have little to no test coverage for setTimeout() and
setInterval() calls with optional arguments.  Now we do.

PR-URL: https://github.com/iojs/io.js/pull/1221
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
test/parallel/test-timers-args.js [new file with mode: 0644]

diff --git a/test/parallel/test-timers-args.js b/test/parallel/test-timers-args.js
new file mode 100644 (file)
index 0000000..599037b
--- /dev/null
@@ -0,0 +1,30 @@
+var common = require('../common');
+var assert = require('assert');
+
+function range(n) {
+  return 'x'.repeat(n + 1).split('').map(function(_, i) { return i; });
+}
+
+function timeout(nargs) {
+  var args = range(nargs);
+  setTimeout.apply(null, [callback, 1].concat(args));
+
+  function callback() {
+    assert.deepEqual([].slice.call(arguments), args);
+    if (nargs < 128) timeout(nargs + 1);
+  }
+}
+
+function interval(nargs) {
+  var args = range(nargs);
+  var timer = setTimeout.apply(null, [callback, 1].concat(args));
+
+  function callback() {
+    clearInterval(timer);
+    assert.deepEqual([].slice.call(arguments), args);
+    if (nargs < 128) interval(nargs + 1);
+  }
+}
+
+timeout(0);
+interval(0);