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