OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library canvas_rendering_context_2d_test; import '../../pkg/unittest/lib/unittes
t.dart'; | 5 library canvas_rendering_context_2d_test; import '../../pkg/unittest/lib/unittes
t.dart'; |
6 import '../../pkg/unittest/lib/html_individual_config.dart'; | 6 import '../../pkg/unittest/lib/html_individual_config.dart'; |
7 import 'dart:html'; | 7 import 'dart:html'; |
8 import 'dart:math'; | 8 import 'dart:math'; |
9 | 9 |
10 // Some rounding errors in the browsers. | 10 // Some rounding errors in the browsers. |
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
343 context.drawImage(img, 50, 50); | 343 context.drawImage(img, 50, 50); |
344 | 344 |
345 expectPixelFilled(50, 50); | 345 expectPixelFilled(50, 50); |
346 expectPixelFilled(55, 55); | 346 expectPixelFilled(55, 55); |
347 expectPixelFilled(59, 59); | 347 expectPixelFilled(59, 59); |
348 expectPixelUnfilled(60, 60); | 348 expectPixelUnfilled(60, 60); |
349 expectPixelUnfilled(0, 0); | 349 expectPixelUnfilled(0, 0); |
350 expectPixelUnfilled(70, 70); | 350 expectPixelUnfilled(70, 70); |
351 })); | 351 })); |
352 img.onError.listen((_) { | 352 img.onError.listen((_) { |
353 guardAsync(() { | 353 fail('URL failed to load.'); |
354 fail('URL failed to load.'); | |
355 }); | |
356 }); | 354 }); |
357 img.src = dataUrl; | 355 img.src = dataUrl; |
358 }); | 356 }); |
359 | 357 |
360 // Draw an image to the canvas from an image element and scale it. | 358 // Draw an image to the canvas from an image element and scale it. |
361 test('with 5 params', () { | 359 test('with 5 params', () { |
362 var dataUrl = otherCanvas.toDataUrl('image/gif'); | 360 var dataUrl = otherCanvas.toDataUrl('image/gif'); |
363 var img = new ImageElement(); | 361 var img = new ImageElement(); |
364 | 362 |
365 img.onLoad.listen(expectAsync((_) { | 363 img.onLoad.listen(expectAsync((_) { |
366 context.drawImageToRect(img, new Rectangle(50, 50, 20, 20)); | 364 context.drawImageToRect(img, new Rectangle(50, 50, 20, 20)); |
367 | 365 |
368 expectPixelFilled(50, 50); | 366 expectPixelFilled(50, 50); |
369 expectPixelFilled(55, 55); | 367 expectPixelFilled(55, 55); |
370 expectPixelFilled(59, 59); | 368 expectPixelFilled(59, 59); |
371 expectPixelFilled(60, 60); | 369 expectPixelFilled(60, 60); |
372 expectPixelFilled(69, 69); | 370 expectPixelFilled(69, 69); |
373 expectPixelUnfilled(70, 70); | 371 expectPixelUnfilled(70, 70); |
374 expectPixelUnfilled(0, 0); | 372 expectPixelUnfilled(0, 0); |
375 expectPixelUnfilled(80, 80); | 373 expectPixelUnfilled(80, 80); |
376 })); | 374 })); |
377 img.onError.listen((_) { | 375 img.onError.listen((_) { |
378 guardAsync(() { | 376 fail('URL failed to load.'); |
379 fail('URL failed to load.'); | |
380 }); | |
381 }); | 377 }); |
382 img.src = dataUrl; | 378 img.src = dataUrl; |
383 }); | 379 }); |
384 | 380 |
385 // Draw an image to the canvas from an image element and scale it. | 381 // Draw an image to the canvas from an image element and scale it. |
386 test('with 9 params', () { | 382 test('with 9 params', () { |
387 otherContext.fillStyle = "blue"; | 383 otherContext.fillStyle = "blue"; |
388 otherContext.fillRect(5, 5, 5, 5); | 384 otherContext.fillRect(5, 5, 5, 5); |
389 var dataUrl = otherCanvas.toDataUrl('image/gif'); | 385 var dataUrl = otherCanvas.toDataUrl('image/gif'); |
390 var img = new ImageElement(); | 386 var img = new ImageElement(); |
(...skipping 14 matching lines...) Expand all Loading... |
405 expectPixelFilled(50, 50); | 401 expectPixelFilled(50, 50); |
406 expectPixelFilled(55, 55); | 402 expectPixelFilled(55, 55); |
407 expectPixelFilled(59, 59); | 403 expectPixelFilled(59, 59); |
408 expectPixelFilled(60, 60); | 404 expectPixelFilled(60, 60); |
409 expectPixelFilled(69, 69); | 405 expectPixelFilled(69, 69); |
410 expectPixelUnfilled(70, 70); | 406 expectPixelUnfilled(70, 70); |
411 expectPixelUnfilled(0, 0); | 407 expectPixelUnfilled(0, 0); |
412 expectPixelUnfilled(80, 80); | 408 expectPixelUnfilled(80, 80); |
413 })); | 409 })); |
414 img.onError.listen((_) { | 410 img.onError.listen((_) { |
415 guardAsync(() { | 411 fail('URL failed to load.'); |
416 fail('URL failed to load.'); | |
417 }); | |
418 }); | 412 }); |
419 img.src = dataUrl; | 413 img.src = dataUrl; |
420 }); | 414 }); |
421 }); | 415 }); |
422 | 416 |
423 // These videos and base64 strings are the same video, representing 2 | 417 // These videos and base64 strings are the same video, representing 2 |
424 // frames of 8x8 red pixels. | 418 // frames of 8x8 red pixels. |
425 // The videos were created with: | 419 // The videos were created with: |
426 // convert -size 8x8 xc:red blank1.jpg | 420 // convert -size 8x8 xc:red blank1.jpg |
427 // convert -size 8x8 xc:red blank2.jpg | 421 // convert -size 8x8 xc:red blank2.jpg |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
487 | 481 |
488 expectPixelFilled(50, 50); | 482 expectPixelFilled(50, 50); |
489 expectPixelFilled(54, 54); | 483 expectPixelFilled(54, 54); |
490 expectPixelFilled(57, 57); | 484 expectPixelFilled(57, 57); |
491 expectPixelUnfilled(58, 58); | 485 expectPixelUnfilled(58, 58); |
492 expectPixelUnfilled(0, 0); | 486 expectPixelUnfilled(0, 0); |
493 expectPixelUnfilled(70, 70); | 487 expectPixelUnfilled(70, 70); |
494 })); | 488 })); |
495 | 489 |
496 video.onError.listen((_) { | 490 video.onError.listen((_) { |
497 guardAsync(() { | 491 fail('URL failed to load.'); |
498 fail('URL failed to load.'); | |
499 }); | |
500 }); | 492 }); |
501 | 493 |
502 if(video.canPlayType('video/webm; codecs="vp8.0, vorbis"', '') != '') { | 494 if(video.canPlayType('video/webm; codecs="vp8.0, vorbis"', '') != '') { |
503 video.src = webmVideoUrl; | 495 video.src = webmVideoUrl; |
504 } else if(video.canPlayType('video/mp4; codecs="avc1.4D401E, mp4a.40.2"', | 496 } else if(video.canPlayType('video/mp4; codecs="avc1.4D401E, mp4a.40.2"', |
505 null) != '') { | 497 null) != '') { |
506 video.src = mp4VideoUrl; | 498 video.src = mp4VideoUrl; |
507 } else { | 499 } else { |
508 window.console.log('Video is not supported on this system.'); | 500 window.console.log('Video is not supported on this system.'); |
509 } | 501 } |
510 }); | 502 }); |
511 | 503 |
512 test('with 5 params', () { | 504 test('with 5 params', () { |
513 video.onCanPlay.listen(expectAsync((_) { | 505 video.onCanPlay.listen(expectAsync((_) { |
514 context.drawImageToRect(video, new Rectangle(50, 50, 20, 20)); | 506 context.drawImageToRect(video, new Rectangle(50, 50, 20, 20)); |
515 | 507 |
516 expectPixelFilled(50, 50); | 508 expectPixelFilled(50, 50); |
517 expectPixelFilled(55, 55); | 509 expectPixelFilled(55, 55); |
518 expectPixelFilled(59, 59); | 510 expectPixelFilled(59, 59); |
519 expectPixelFilled(60, 60); | 511 expectPixelFilled(60, 60); |
520 expectPixelFilled(69, 69); | 512 expectPixelFilled(69, 69); |
521 expectPixelUnfilled(70, 70); | 513 expectPixelUnfilled(70, 70); |
522 expectPixelUnfilled(0, 0); | 514 expectPixelUnfilled(0, 0); |
523 expectPixelUnfilled(80, 80); | 515 expectPixelUnfilled(80, 80); |
524 })); | 516 })); |
525 video.onError.listen((_) { | 517 video.onError.listen((_) { |
526 guardAsync(() { | 518 fail('URL failed to load.'); |
527 fail('URL failed to load.'); | |
528 }); | |
529 }); | 519 }); |
530 | 520 |
531 if(video.canPlayType('video/webm; codecs="vp8.0, vorbis"', '') != '') { | 521 if(video.canPlayType('video/webm; codecs="vp8.0, vorbis"', '') != '') { |
532 video.src = webmVideoUrl; | 522 video.src = webmVideoUrl; |
533 } else if(video.canPlayType('video/mp4; codecs="avc1.4D401E, mp4a.40.2"', | 523 } else if(video.canPlayType('video/mp4; codecs="avc1.4D401E, mp4a.40.2"', |
534 null) != '') { | 524 null) != '') { |
535 video.src = mp4VideoUrl; | 525 video.src = mp4VideoUrl; |
536 } else { | 526 } else { |
537 // TODO(amouravski): Better fallback? | 527 // TODO(amouravski): Better fallback? |
538 window.console.log('Video is not supported on this system.'); | 528 window.console.log('Video is not supported on this system.'); |
539 } | 529 } |
540 }); | 530 }); |
541 | 531 |
542 test('with 9 params', () { | 532 test('with 9 params', () { |
543 video.onCanPlay.listen(expectAsync((_) { | 533 video.onCanPlay.listen(expectAsync((_) { |
544 context.drawImageToRect(video, new Rectangle(50, 50, 20, 20), | 534 context.drawImageToRect(video, new Rectangle(50, 50, 20, 20), |
545 sourceRect: new Rectangle(2, 2, 6, 6)); | 535 sourceRect: new Rectangle(2, 2, 6, 6)); |
546 | 536 |
547 expectPixelFilled(50, 50); | 537 expectPixelFilled(50, 50); |
548 expectPixelFilled(55, 55); | 538 expectPixelFilled(55, 55); |
549 expectPixelFilled(59, 59); | 539 expectPixelFilled(59, 59); |
550 expectPixelFilled(60, 60); | 540 expectPixelFilled(60, 60); |
551 expectPixelFilled(69, 69); | 541 expectPixelFilled(69, 69); |
552 expectPixelUnfilled(70, 70); | 542 expectPixelUnfilled(70, 70); |
553 expectPixelUnfilled(0, 0); | 543 expectPixelUnfilled(0, 0); |
554 expectPixelUnfilled(80, 80); | 544 expectPixelUnfilled(80, 80); |
555 })); | 545 })); |
556 video.onError.listen((_) { | 546 video.onError.listen((_) { |
557 guardAsync(() { | 547 fail('URL failed to load.'); |
558 fail('URL failed to load.'); | |
559 }); | |
560 }); | 548 }); |
561 | 549 |
562 if(video.canPlayType('video/webm; codecs="vp8.0, vorbis"', '') != '') { | 550 if(video.canPlayType('video/webm; codecs="vp8.0, vorbis"', '') != '') { |
563 video.src = webmVideoUrl; | 551 video.src = webmVideoUrl; |
564 } else if(video.canPlayType('video/mp4; codecs="avc1.4D401E, mp4a.40.2"', | 552 } else if(video.canPlayType('video/mp4; codecs="avc1.4D401E, mp4a.40.2"', |
565 null) != '') { | 553 null) != '') { |
566 video.src = mp4VideoUrl; | 554 video.src = mp4VideoUrl; |
567 } else { | 555 } else { |
568 // TODO(amouravski): Better fallback? | 556 // TODO(amouravski): Better fallback? |
569 window.console.log('Video is not supported on this system.'); | 557 window.console.log('Video is not supported on this system.'); |
(...skipping 15 matching lines...) Expand all Loading... |
585 expectPixelFilled(50, 50); | 573 expectPixelFilled(50, 50); |
586 expectPixelFilled(55, 55); | 574 expectPixelFilled(55, 55); |
587 expectPixelFilled(59, 59); | 575 expectPixelFilled(59, 59); |
588 expectPixelFilled(60, 60); | 576 expectPixelFilled(60, 60); |
589 expectPixelFilled(69, 69); | 577 expectPixelFilled(69, 69); |
590 expectPixelUnfilled(70, 70); | 578 expectPixelUnfilled(70, 70); |
591 expectPixelUnfilled(0, 0); | 579 expectPixelUnfilled(0, 0); |
592 expectPixelUnfilled(80, 80); | 580 expectPixelUnfilled(80, 80); |
593 })); | 581 })); |
594 video.onError.listen((_) { | 582 video.onError.listen((_) { |
595 guardAsync(() { | 583 fail('URL failed to load.'); |
596 fail('URL failed to load.'); | |
597 }); | |
598 }); | 584 }); |
599 | 585 |
600 if(video.canPlayType('video/webm; codecs="vp8.0, vorbis"', '') != '') { | 586 if(video.canPlayType('video/webm; codecs="vp8.0, vorbis"', '') != '') { |
601 video.src = webmVideoDataUrl; | 587 video.src = webmVideoDataUrl; |
602 } else if(video.canPlayType('video/mp4; codecs="avc1.4D401E, mp4a.40.2"', | 588 } else if(video.canPlayType('video/mp4; codecs="avc1.4D401E, mp4a.40.2"', |
603 null) != '') { | 589 null) != '') { |
604 video.src = mp4VideoDataUrl; | 590 video.src = mp4VideoDataUrl; |
605 } else { | 591 } else { |
606 // TODO(amouravski): Better fallback? | 592 // TODO(amouravski): Better fallback? |
607 window.console.log('Video is not supported on this system.'); | 593 window.console.log('Video is not supported on this system.'); |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
738 | 724 |
739 // The box does not draw after 20 pixels. | 725 // The box does not draw after 20 pixels. |
740 expectPixelUnfilled(x - 10, y); | 726 expectPixelUnfilled(x - 10, y); |
741 expectPixelUnfilled(x + maxWidth + 1, y); | 727 expectPixelUnfilled(x + maxWidth + 1, y); |
742 expectPixelUnfilled(x + maxWidth + 20, y); | 728 expectPixelUnfilled(x + maxWidth + 20, y); |
743 expectPixelFilled(x, y); | 729 expectPixelFilled(x, y); |
744 expectPixelFilled(x + 10, y); | 730 expectPixelFilled(x + 10, y); |
745 }); | 731 }); |
746 }); | 732 }); |
747 } | 733 } |
OLD | NEW |