@@ -127,25 +127,37 @@ describe('Image', function () {
127127
128128 img . onload = ( ) => { onloadCalled += 1 }
129129
130+ // it's should be png_clock, because when you change the img.src, it doesn't load the image immediately.
130131 img . src = png_checkers
131132 assert . strictEqual ( img . src , png_checkers )
132133 assert . strictEqual ( img . complete , true )
133- assert . strictEqual ( img . width , 2 )
134- assert . strictEqual ( img . height , 2 )
134+
135+ // it's still png_clock
136+ assert . strictEqual ( img . width , 320 )
137+ assert . strictEqual ( img . height , 320 )
135138
136139 img . src = png_clock
137140 assert . strictEqual ( img . src , png_clock )
138141 assert . strictEqual ( true , img . complete )
139142 assert . strictEqual ( 320 , img . width )
140143 assert . strictEqual ( 320 , img . height )
141144
142- assert . strictEqual ( onloadCalled , 2 )
145+ // called in nextTick
146+ assert . strictEqual ( onloadCalled , 0 )
143147
144148 onloadCalled = 0
145149 img . onload = ( ) => { onloadCalled += 1 }
146150
151+ // reset src will clear the old src changes.
147152 img . src = png_clock
148- assert . strictEqual ( onloadCalled , 1 )
153+ assert . strictEqual ( onloadCalled , 0 )
154+
155+ return new Promise ( resolve => {
156+ setTimeout ( ( ) => {
157+ assert . strictEqual ( onloadCalled , 1 )
158+ resolve ( ) ;
159+ } , 0 )
160+ } ) ;
149161 } )
150162 } )
151163
@@ -189,28 +201,47 @@ describe('Image', function () {
189201 img . src = `${ png_clock } s2`
190202 assert . strictEqual ( img . src , `${ png_clock } s2` )
191203
192- assert . strictEqual ( onerrorCalled , 2 )
204+ // it's not synchronized call, onerror will be invoked in async steps.
205+ assert . strictEqual ( onerrorCalled , 0 )
193206
194207 onerrorCalled = 0
195208 img . onerror = ( ) => { onerrorCalled += 1 }
196209
197210 img . src = `${ png_clock } s3`
198211 assert . strictEqual ( img . src , `${ png_clock } s3` )
199212
200- assert . strictEqual ( onerrorCalled , 1 )
213+ assert . strictEqual ( onerrorCalled , 0 )
201214 assert . strictEqual ( onloadCalled , 0 )
215+
216+ return new Promise ( resolve => {
217+ setTimeout ( ( ) => {
218+ assert . strictEqual ( onerrorCalled , 1 )
219+ assert . strictEqual ( onloadCalled , 0 )
220+ resolve ( ) ;
221+ } ) ;
222+ } ) ;
202223 } )
203224 } )
204225
205226 it ( 'Image#{width,height}' , function ( ) {
206227 return loadImage ( png_clock ) . then ( ( img ) => {
207228 img . src = ''
208- assert . strictEqual ( img . width , 0 )
209- assert . strictEqual ( img . height , 0 )
210-
211- img . src = png_clock
212- assert . strictEqual ( img . width , 320 )
213- assert . strictEqual ( img . height , 320 )
229+ return new Promise ( ( resolve ) => {
230+ setTimeout ( ( ) => {
231+ assert . strictEqual ( img . width , 0 )
232+ assert . strictEqual ( img . height , 0 )
233+ resolve ( ) ;
234+ } )
235+ } ) . then ( ( ) => {
236+ img . src = png_clock
237+ return new Promise ( ( resolve ) => {
238+ setTimeout ( ( ) => {
239+ assert . strictEqual ( img . width , 320 )
240+ assert . strictEqual ( img . height , 320 )
241+ resolve ( )
242+ } )
243+ } )
244+ } )
214245 } )
215246 } )
216247
@@ -221,11 +252,17 @@ describe('Image', function () {
221252 img . onerror = ( ) => { onerrorCalled += 1 }
222253
223254 img . src = Buffer . alloc ( 0 )
224- assert . strictEqual ( img . width , 0 )
225- assert . strictEqual ( img . height , 0 )
226- assert . strictEqual ( img . complete , true )
227255
228- assert . strictEqual ( onerrorCalled , 1 )
256+ return new Promise ( ( resolve ) => {
257+ setTimeout ( ( ) => {
258+ assert . strictEqual ( img . width , 0 )
259+ assert . strictEqual ( img . height , 0 )
260+ assert . strictEqual ( img . complete , true )
261+
262+ assert . strictEqual ( onerrorCalled , 1 )
263+ resolve ( )
264+ } )
265+ } )
229266 } )
230267 } )
231268
@@ -236,23 +273,34 @@ describe('Image', function () {
236273 img . onload = ( ) => { onloadCalled += 1 }
237274
238275 img . src = png_checkers
239- assert . strictEqual ( img . src , png_checkers )
240- assert . strictEqual ( img . complete , true )
241- assert . strictEqual ( img . width , 2 )
242- assert . strictEqual ( img . height , 2 )
243-
244- assert . strictEqual ( onloadCalled , 1 )
245-
246- onloadCalled = 0
247- img . onload = null
248-
249- img . src = png_clock
250- assert . strictEqual ( img . src , png_clock )
251- assert . strictEqual ( img . complete , true )
252- assert . strictEqual ( img . width , 320 )
253- assert . strictEqual ( img . height , 320 )
254276
255- assert . strictEqual ( onloadCalled , 0 )
277+ return new Promise ( ( resolve ) => {
278+ setTimeout ( ( ) => {
279+ assert . strictEqual ( img . src , png_checkers )
280+ assert . strictEqual ( img . complete , true )
281+ assert . strictEqual ( img . width , 2 )
282+ assert . strictEqual ( img . height , 2 )
283+
284+ assert . strictEqual ( onloadCalled , 1 )
285+
286+ onloadCalled = 0
287+ img . onload = null
288+ img . src = png_clock
289+ resolve ( )
290+ } )
291+ } ) . then ( ( ) => {
292+ return new Promise ( ( resolve ) => {
293+ setTimeout ( ( ) => {
294+ assert . strictEqual ( img . src , png_clock )
295+ assert . strictEqual ( img . complete , true )
296+ assert . strictEqual ( img . width , 320 )
297+ assert . strictEqual ( img . height , 320 )
298+
299+ assert . strictEqual ( onloadCalled , 0 )
300+ resolve ( )
301+ } )
302+ } )
303+ } )
256304 } )
257305 } )
258306
@@ -265,21 +313,31 @@ describe('Image', function () {
265313 img . onerror = ( ) => { onerrorCalled += 1 }
266314
267315 img . src = `${ png_clock } s1`
316+
268317 assert . strictEqual ( img . src , `${ png_clock } s1` )
269318
270319 img . src = `${ png_clock } s2`
271320 assert . strictEqual ( img . src , `${ png_clock } s2` )
272321
273- assert . strictEqual ( onerrorCalled , 2 )
274322
275- onerrorCalled = 0
276- img . onerror = null
277-
278- img . src = `${ png_clock } s3`
279- assert . strictEqual ( img . src , `${ png_clock } s3` )
280-
281- assert . strictEqual ( onloadCalled , 0 )
282- assert . strictEqual ( onerrorCalled , 0 )
323+ return new Promise ( ( resolve ) => {
324+ setTimeout ( ( ) => {
325+ assert . strictEqual ( onerrorCalled , 1 )
326+ resolve ( )
327+ } )
328+ } ) . then ( ( ) => new Promise ( resolve => {
329+ onerrorCalled = 0
330+ img . onerror = null
331+
332+ img . src = `${ png_clock } s3`
333+ assert . strictEqual ( img . src , `${ png_clock } s3` )
334+
335+ setTimeout ( ( ) => {
336+ assert . strictEqual ( onloadCalled , 0 )
337+ assert . strictEqual ( onerrorCalled , 0 )
338+ resolve ( )
339+ } )
340+ } ) )
283341 } )
284342 } )
285343
@@ -386,7 +444,7 @@ describe('Image', function () {
386444 255 , 0 , 0 , 127 ,
387445 255 , 255 , 255 , 127 ,
388446 ] ) ;
389-
447+
390448 done ( ) ;
391449 } ;
392450
@@ -404,7 +462,7 @@ describe('Image', function () {
404462 testImgd ( img , [
405463 255 , 0 , 0 , 255 ,
406464 ] ) ;
407-
465+
408466 done ( ) ;
409467 } ;
410468
@@ -423,7 +481,7 @@ describe('Image', function () {
423481 255 , 0 , 0 , 255 ,
424482 0 , 255 , 0 , 255 ,
425483 ] ) ;
426-
484+
427485 done ( ) ;
428486 } ;
429487
0 commit comments