![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/dceprojects.corals.io/node_modules/pend/ |
var assert = require('assert'); var Pend = require('./'); var tests = [ { name: "basic", fn: testBasic, }, { name: "max", fn: testWithMax, }, { name: "callback twice", fn: testCallbackTwice, }, { name: "calling wait twice", fn: testCallingWaitTwice, }, { name: "hold()", fn: testHoldFn, }, ]; var testCount = tests.length; doOneTest(); function doOneTest() { var test = tests.shift(); if (!test) { console.log(testCount + " tests passed."); return; } process.stdout.write(test.name + "..."); test.fn(function() { process.stdout.write("OK\n"); doOneTest(); }); } function testBasic(cb) { var pend = new Pend(); var results = []; pend.go(function(cb) { results.push(1); setTimeout(function() { results.push(3); cb(); }, 500); }); pend.go(function(cb) { results.push(2); setTimeout(function() { results.push(4); cb(); }, 1000); }); pend.wait(function(err) { assert.deepEqual(results, [1,2,3,4]); cb(); }); assert.deepEqual(results, [1, 2]); } function testWithMax(cb) { var pend = new Pend(); var results = []; pend.max = 2; pend.go(function(cb) { results.push('a'); setTimeout(function() { results.push(1); cb(); }, 500); }); pend.go(function(cb) { results.push('b'); setTimeout(function() { results.push(1); cb(); }, 500); }); pend.go(function(cb) { results.push('c'); setTimeout(function() { results.push(2); cb(); }, 100); }); pend.wait(function(err) { assert.deepEqual(results, ['a', 'b', 1, 'c', 1, 2]); cb(); }); assert.deepEqual(results, ['a', 'b']); } function testCallbackTwice(cb) { var pend = new Pend(); pend.go(function(cb) { setTimeout(cb, 100); }); pend.go(function(cb) { cb(); assert.throws(cb, /callback called twice/); }); pend.wait(cb); } function testCallingWaitTwice(cb) { var pend = new Pend(); pend.go(function(cb) { setTimeout(cb, 100); }); pend.wait(function() { pend.go(function(cb) { setTimeout(cb, 50); }); pend.go(function(cb) { setTimeout(cb, 10); }); pend.go(function(cb) { setTimeout(cb, 20); }); pend.wait(cb); }); } function testHoldFn(cb) { var pend = new Pend(); setTimeout(pend.hold(), 100); pend.go(function(cb) { cb(); }); pend.wait(cb); }