123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- 'use strict';
- var Saferphore = require('./index');
- var assert = function (x) { if (!x) { throw new Error(); } };
- var basicTest = function () {
- var sem = Saferphore.create(4);
- var out = [];
- (new Array(10)).join().split(',').forEach(function (x,y) {
- sem.take(function (returnAfter) {
- out.push(y);
- setTimeout(returnAfter(function () {
- if (out.length === 10) {
- if (out.join() !== "0,1,2,3,4,5,6,7,8,9") { throw new Error(); }
- }
- }));
- });
- });
- if (out.join() !== "0,1,2,3") {
- throw new Error(out.join());
- }
- };
- var doubleCallTest = function () {
- var sem = Saferphore.create(4);
- var catcher = setTimeout(function () {
- throw new Error();
- }, 1000);
- sem.take(function (returnAfter) {
- setTimeout(returnAfter(function () {
- setTimeout(function () {
- clearTimeout(catcher);
- try { returnAfter()(); } catch (e) { return; }
- throw new Error();
- });
- }));
- });
- };
- var doubleCallbackTest = function () {
- var sem = Saferphore.create(4);
- var catcher = setTimeout(function () {
- throw new Error();
- }, 1000);
- sem.take(function (returnAfter) {
- var wrapped = returnAfter();
- wrapped();
- try { wrapped(); } catch (e) { clearTimeout(catcher); return; }
- throw new Error();
- });
- };
- basicTest();
- doubleCallTest();
- doubleCallbackTest();
|