1+ describe ( 'Q-API' , function ( ) {
2+ var Q = require ( 'q' ) ;
3+
4+ it ( 'should execute .spawn() correctly' , function ( ) {
5+ var Thread = require ( '../lib/thread.js' ) ;
6+ var p = new Thread ( [ 1 , 2 , 3 ] ) ;
7+
8+ var done = false ;
9+ var result = null ;
10+
11+ runs ( function ( ) {
12+ Q . when ( p . spawn ( function ( data ) {
13+ return [ 'something' , 'completly' , 'else' ] ;
14+ } ) ) . then ( function ( data ) {
15+ result = data ;
16+ done = true ;
17+ } ) ;
18+ } ) ;
19+
20+ waitsFor ( function ( ) {
21+ return done ;
22+ } , "it should finish" , 500 ) ;
23+
24+ runs ( function ( ) {
25+ expect ( result ) . toEqual ( [ 'something' , 'completly' , 'else' ] ) ;
26+ } ) ;
27+ } ) ;
28+
29+ it ( 'should .map() correctly' , function ( ) {
30+ var Thread = require ( '../lib/thread.js' ) ;
31+ var p = new Thread ( [ 1 , 2 , 3 ] ) ;
32+
33+ var done = false ;
34+ var result = null ;
35+
36+ runs ( function ( ) {
37+ Q . when ( p . map ( function ( el ) {
38+ return el + 1 ;
39+ } ) ) . then ( function ( data ) {
40+ result = data ;
41+ done = true ;
42+ } ) ;
43+ } ) ;
44+
45+ waitsFor ( function ( ) {
46+ return done ;
47+ } , "it should finish" , 500 ) ;
48+
49+ runs ( function ( ) {
50+ expect ( result ) . toEqual ( [ 2 , 3 , 4 ] ) ;
51+ } ) ;
52+ } ) ;
53+
54+ it ( 'should queue map work correctly' , function ( ) {
55+ var Thread = require ( '../lib/thread.js' ) ;
56+ var p = new Thread ( [ 1 , 2 , 3 ] , { maxWorkers : 2 } ) ;
57+
58+ var done = false ;
59+ var result = null ;
60+
61+ runs ( function ( ) {
62+ Q . when ( p . map ( function ( el ) {
63+ return el + 1 ;
64+ } ) ) . then ( function ( data ) {
65+ result = data ;
66+ done = true ;
67+ } ) ;
68+ } ) ;
69+
70+ waitsFor ( function ( ) {
71+ return done ;
72+ } , "it should finish" , 500 ) ;
73+
74+ runs ( function ( ) {
75+ expect ( result ) . toEqual ( [ 2 , 3 , 4 ] ) ;
76+ } ) ;
77+ } ) ;
78+
79+ it ( 'should chain .map() correctly' , function ( ) {
80+ var Thread = require ( '../lib/thread.js' ) ;
81+ var p = new Thread ( [ 1 , 2 , 3 ] ) ;
82+
83+ var done = false ;
84+ var result = null ;
85+
86+ runs ( function ( ) {
87+ Q . when ( p . map ( function ( el ) {
88+ return el + 1 ;
89+ } ) ) . then ( function ( ) {
90+ return p . map ( function ( el ) {
91+ return el - 1 ;
92+ } ) ;
93+ } ) . then ( function ( data ) {
94+ result = data ;
95+ done = true ;
96+ } ) ;
97+ } ) ;
98+
99+ waitsFor ( function ( ) {
100+ return done ;
101+ } , "it should finish" , 500 ) ;
102+
103+ runs ( function ( ) {
104+ expect ( result ) . toEqual ( [ 1 , 2 , 3 ] ) ;
105+ } ) ;
106+ } ) ;
107+
108+ it ( 'should mix .spawn and .map() correctly' , function ( ) {
109+ var Thread = require ( '../lib/thread.js' ) ;
110+ var p = new Thread ( [ 1 , 2 , 3 ] ) ;
111+
112+ var done = false ;
113+ var result = null ;
114+
115+ runs ( function ( ) {
116+ Q . when ( p . map ( function ( el ) {
117+ return el + 1 ;
118+ } ) ) . then ( function ( ) {
119+ return p . spawn ( function ( data ) {
120+ var sum = 0 ;
121+ for ( var i = 0 ; i < data . length ; ++ i ) {
122+ sum += data [ i ] ;
123+ }
124+ return sum ;
125+ } ) ;
126+ } ) . then ( function ( data ) {
127+ result = data ;
128+ done = true ;
129+ } ) ;
130+ } ) ;
131+
132+ waitsFor ( function ( ) {
133+ return done ;
134+ } , "it should finish" , 500 ) ;
135+
136+ runs ( function ( ) {
137+ expect ( result ) . toEqual ( 9 ) ;
138+ } ) ;
139+ } ) ;
140+
141+ it ( 'should execute .reduce() correctly' , function ( ) {
142+ var Thread = require ( '../lib/thread.js' ) ;
143+ var p = new Thread ( [ 1 , 2 , 3 ] ) ;
144+ var done = false ;
145+ var result = null ;
146+
147+ runs ( function ( ) {
148+ Q . when ( p . reduce ( function ( data ) {
149+ return data [ 0 ] + data [ 1 ] ;
150+ } ) ) . then ( function ( data ) {
151+ result = data ;
152+ done = true ;
153+ } ) ;
154+ } ) ;
155+
156+ waitsFor ( function ( ) {
157+ return done ;
158+ } , "it should finish" , 500 ) ;
159+
160+ runs ( function ( ) {
161+ expect ( result ) . toEqual ( 6 ) ;
162+ } ) ;
163+ } ) ;
164+
165+ it ( 'should process data returned from .then()' , function ( ) {
166+ var Thread = require ( '../lib/thread.js' ) ;
167+ var p = new Thread ( [ 1 , 2 , 3 ] ) ;
168+
169+ var done = false ;
170+ var result = null ;
171+
172+ runs ( function ( ) {
173+ Q . when ( p . map ( function ( el ) {
174+ return el + 1 ;
175+ } ) ) . then ( function ( ) {
176+ return p . then ( function ( data ) {
177+ var sum = 0 ;
178+ for ( var i = 0 ; i < data . length ; ++ i ) {
179+ sum += data [ i ] ;
180+ }
181+ return sum ;
182+ } ) ;
183+ } ) . then ( function ( data ) {
184+ result = data ;
185+ done = true ;
186+ } ) ;
187+ } ) ;
188+
189+ waitsFor ( function ( ) {
190+ return done ;
191+ } , "it should finish" , 500 ) ;
192+
193+ runs ( function ( ) {
194+ expect ( result ) . toEqual ( 9 ) ;
195+ } ) ;
196+ } ) ;
197+ } ) ;
0 commit comments