From 232356906e8b19300ae0fe1475dd92a56a730af9 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Sun, 22 Jan 2017 21:26:55 -0800 Subject: [PATCH] test: enhance test-timers In test-timers, confirm that all input values that should be coerced to 1 ms are not being coerced to a significantly larger value. This eliminates the need for the separate test-regress-GH-897. --- test/parallel/test-regress-GH-897.js | 20 -------------------- test/parallel/test-timers.js | 22 +++++++++++++++------- 2 files changed, 15 insertions(+), 27 deletions(-) delete mode 100644 test/parallel/test-regress-GH-897.js diff --git a/test/parallel/test-regress-GH-897.js b/test/parallel/test-regress-GH-897.js deleted file mode 100644 index 911ad6b6b2e112..00000000000000 --- a/test/parallel/test-regress-GH-897.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; - -// Test for bug where a timer duration greater than 0 ms but less than 1 ms -// resulted in the duration being set for 1000 ms. The expected behavior is -// that the timeout would be set for 1 ms, and thus fire before timers set -// with values greater than 1ms. -// -// Ref: https://github.com/nodejs/node-v0.x-archive/pull/897 - -const common = require('../common'); - -let timer; - -setTimeout(function() { - clearTimeout(timer); -}, 0.1); // 0.1 should be treated the same as 1, not 1000... - -timer = setTimeout(function() { - common.fail('timers fired out of order'); -}, 2); // ...so this timer should fire second. diff --git a/test/parallel/test-timers.js b/test/parallel/test-timers.js index 64a33515b1660c..df2240d2c444af 100644 --- a/test/parallel/test-timers.js +++ b/test/parallel/test-timers.js @@ -1,5 +1,5 @@ 'use strict'; -require('../common'); +const common = require('../common'); const assert = require('assert'); const inputs = [ @@ -18,13 +18,14 @@ const inputs = [ -10, -1, -0.5, + -0.1, -0.0, 0, 0.0, + 0.1, 0.5, 1, 1.0, - 10, 2147483648, // browser behaviour: timeouts > 2^31-1 run on next tick 12345678901234 // ditto ]; @@ -43,10 +44,17 @@ inputs.forEach(function(value, index) { }, value); }); -process.on('exit', function() { - // assert that all timers have run +// All values in inputs array coerce to 1 ms. Therefore, they should all run +// before a timer set here for 2 ms. + +setTimeout(common.mustCall(function() { + // assert that all other timers have run inputs.forEach(function(value, index) { - assert.strictEqual(true, timeouts[index]); - assert.strictEqual(true, intervals[index]); + assert(timeouts[index]); + assert(intervals[index]); }); -}); +}), 2); + +// Test 10 ms timeout separately. +setTimeout(common.mustCall(function() {}), 10); +setInterval(common.mustCall(function() { clearInterval(this); }), 10);