Skip to content

Commit 24521ef

Browse files
author
Forbes Lindesay
committed
Add test case for very nested promises
1 parent fa3a970 commit 24521ef

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed

test/nested-promises.js

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
'use strict';
2+
3+
var assert = require('assert');
4+
var Promise = require('../');
5+
6+
describe('nested promises', function () {
7+
it('does not result in any wierd behaviour - 1', function (done) {
8+
var resolveA, resolveB, resolveC;
9+
var A = new Promise(function (resolve, reject) {
10+
resolveA = resolve;
11+
});
12+
var B = new Promise(function (resolve, reject) {
13+
resolveB = resolve;
14+
});
15+
var C = new Promise(function (resolve, reject) {
16+
resolveC = resolve;
17+
});
18+
resolveA(B);
19+
resolveB(C);
20+
resolveC('foo');
21+
A.done(function (result) {
22+
assert(result === 'foo');
23+
done();
24+
});
25+
});
26+
it('does not result in any wierd behaviour - 2', function (done) {
27+
var resolveA, resolveB, resolveC, resolveD;
28+
var A = new Promise(function (resolve, reject) {
29+
resolveA = resolve;
30+
});
31+
var B = new Promise(function (resolve, reject) {
32+
resolveB = resolve;
33+
});
34+
var C = new Promise(function (resolve, reject) {
35+
resolveC = resolve;
36+
});
37+
var D = new Promise(function (resolve, reject) {
38+
resolveD = resolve;
39+
});
40+
var Athen = A.then, Bthen = B.then, Cthen = C.then, Dthen = D.then;
41+
resolveA(B);
42+
resolveB(C);
43+
resolveC(D);
44+
resolveD('foo');
45+
A.done(function (result) {
46+
assert(result === 'foo');
47+
done();
48+
});
49+
});
50+
it('does not result in any wierd behaviour - 2', function (done) {
51+
var promises = [];
52+
var resolveFns = [];
53+
for (var i = 0; i < 100; i++) {
54+
promises.push(new Promise(function (resolve) {
55+
resolveFns.push(resolve);
56+
}));
57+
}
58+
for (var i = 0; i < 99; i++) {
59+
resolveFns[i](promises[i + 1]);
60+
}
61+
resolveFns[99]('foo');
62+
promises[0].done(function (result) {
63+
assert(result === 'foo');
64+
done();
65+
});
66+
});
67+
});

0 commit comments

Comments
 (0)