3 import "testhelper.js" as Helper
6 id:canvas; width:100;height:50; renderTarget: Canvas.Image
8 name: "path"; when: windowShown
10 function test_basic() {
11 var ctx = canvas.getContext('2d');
13 ctx.fillStyle = '#0f0';
14 ctx.fillRect(0, 0, 100, 50);
16 ctx.fillStyle = '#f00';
18 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
21 ctx.fillStyle = '#f00';
22 ctx.fillRect(0, 0, 100, 50);
24 ctx.rect(0, 0, 100, 50);
26 ctx.fillStyle = '#0f0';
28 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
32 ctx.rect(0, 0, 100, 50);
34 ctx.fillStyle = '#f00';
36 //verify(Helper.comparePixel(ctx, 20,20, 0,0,0,0));
38 function test_beginPath() {
39 var ctx = canvas.getContext('2d');
40 ctx.fillStyle = '#0f0';
41 ctx.fillRect(0, 0, 100, 50);
42 ctx.rect(0, 0, 100, 50);
44 ctx.fillStyle = '#f00';
46 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
48 function test_closePath() {
49 var ctx = canvas.getContext('2d');
51 ctx.fillStyle = '#0f0';
52 ctx.fillRect(0, 0, 100, 50);
54 ctx.fillStyle = '#f00';
56 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
59 ctx.fillStyle = '#f00';
60 ctx.fillRect(0, 0, 100, 50);
61 ctx.strokeStyle = '#0f0';
64 ctx.lineTo(-100, -100);
65 ctx.lineTo(200, -100);
69 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
72 ctx.fillStyle = '#f00';
73 ctx.fillRect(0, 0, 100, 50);
74 ctx.strokeStyle = '#0f0';
77 ctx.lineTo(-100, -1000);
81 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
84 function test_isPointInPath() {
85 var ctx = canvas.getContext('2d');
87 ctx.arc(50, 25, 10, 0, Math.PI, false);
88 verify(!ctx.isPointInPath(50, 10));
89 verify(!ctx.isPointInPath(50, 20));
90 //verify(!ctx.isPointInPath(50, 30));
91 verify(!ctx.isPointInPath(50, 40));
92 verify(!ctx.isPointInPath(30, 20));
93 verify(!ctx.isPointInPath(70, 20));
94 verify(!ctx.isPointInPath(30, 30));
95 verify(!ctx.isPointInPath(70, 30));
98 ctx.rect(0, 0, 20, 20);
99 verify(ctx.isPointInPath(10, 10));
100 verify(!ctx.isPointInPath(30, 10));
103 ctx.rect(20, 0, 20, 20);
104 //verify(ctx.isPointInPath(10, 10));
105 verify(ctx.isPointInPath(30, 10));
108 ctx.bezierCurveTo(50, -50, 50, 100, 75, 25);
109 verify(!ctx.isPointInPath(25, 20));
110 verify(!ctx.isPointInPath(25, 30));
111 //verify(ctx.isPointInPath(30, 20));
112 verify(!ctx.isPointInPath(30, 30));
113 //verify(!ctx.isPointInPath(40, 2));
114 //verify(ctx.isPointInPath(40, 20));
115 verify(!ctx.isPointInPath(40, 30));
116 verify(!ctx.isPointInPath(40, 47));
117 //verify(ctx.isPointInPath(45, 20));
118 //verify(!ctx.isPointInPath(45, 30));
119 //verify(!ctx.isPointInPath(55, 20));
120 //verify(ctx.isPointInPath(55, 30));
121 verify(!ctx.isPointInPath(60, 2));
122 //verify(!ctx.isPointInPath(60, 20));
123 verify(ctx.isPointInPath(60, 30));
124 verify(!ctx.isPointInPath(60, 47));
125 verify(!ctx.isPointInPath(70, 20));
126 verify(ctx.isPointInPath(70, 30));
127 verify(!ctx.isPointInPath(75, 20));
128 verify(!ctx.isPointInPath(75, 30));
131 ctx.arc(50, 25, 10, 0, 7, false);
132 verify(!ctx.isPointInPath(50, 10));
133 //verify(ctx.isPointInPath(50, 20));
134 //verify(ctx.isPointInPath(50, 30));
135 verify(!ctx.isPointInPath(50, 40));
136 verify(!ctx.isPointInPath(30, 20));
137 verify(!ctx.isPointInPath(70, 20));
138 verify(!ctx.isPointInPath(30, 30));
139 //verify(!ctx.isPointInPath(70, 30));
142 ctx.rect(0, 0, 20, 20);
143 verify(ctx.isPointInPath(0, 0));
144 verify(ctx.isPointInPath(10, 0));
145 //verify(ctx.isPointInPath(20, 0));
146 //verify(ctx.isPointInPath(20, 10));
147 //verify(ctx.isPointInPath(20, 20));
148 //verify(ctx.isPointInPath(10, 20));
149 //verify(ctx.isPointInPath(0, 20));
150 verify(ctx.isPointInPath(0, 10));
151 verify(!ctx.isPointInPath(10, -0.01));
152 verify(!ctx.isPointInPath(10, 20.01));
153 verify(!ctx.isPointInPath(-0.01, 10));
154 //verify(!ctx.isPointInPath(20.01, 10));
157 verify(!ctx.isPointInPath(0, 0));
161 ctx.rect(-100, -50, 200, 100);
162 //verify(ctx.isPointInPath(Infinity, 0));
163 //verify(ctx.isPointInPath(-Infinity, 0));
164 //verify(ctx.isPointInPath(NaN, 0));
165 //verify(ctx.isPointInPath(0, Infinity));
166 //verify(ctx.isPointInPath(0, -Infinity));
167 //verify(ctx.isPointInPath(0, NaN));
168 //verify(ctx.isPointInPath(NaN, NaN));
171 ctx.rect(0, -100, 20, 20);
172 ctx.rect(20, -10, 20, 20);
173 verify(!ctx.isPointInPath(10, -110));
174 verify(ctx.isPointInPath(10, -90));
175 verify(!ctx.isPointInPath(10, -70));
176 //verify(!ctx.isPointInPath(30, -20));
177 //verify(ctx.isPointInPath(30, 0));
178 //verify(!ctx.isPointInPath(30, 20));
181 ctx.rect(0, 0, 20, 20);
183 ctx.rect(20, 0, 20, 20);
185 ctx.rect(40, 0, 20, 20);
186 verify(!ctx.isPointInPath(10, 10));
187 verify(ctx.isPointInPath(30, 10));
188 verify(ctx.isPointInPath(50, 10));
191 ctx.translate(50, 0);
192 ctx.rect(0, 0, 20, 20);
193 verify(!ctx.isPointInPath(-40, 10));
194 verify(!ctx.isPointInPath(10, 10));
195 //verify(!ctx.isPointInPath(49, 10));
196 verify(ctx.isPointInPath(51, 10));
197 verify(ctx.isPointInPath(69, 10));
198 verify(!ctx.isPointInPath(71, 10));
201 ctx.rect(50, 0, 20, 20);
202 ctx.translate(50, 0);
203 verify(!ctx.isPointInPath(-40, 10));
204 verify(!ctx.isPointInPath(10, 10));
205 //verify(!ctx.isPointInPath(49, 10));
206 verify(ctx.isPointInPath(51, 10));
207 verify(ctx.isPointInPath(69, 10));
208 verify(!ctx.isPointInPath(71, 10));
212 ctx.rect(-70, 0, 20, 20);
213 verify(!ctx.isPointInPath(-40, 10));
214 verify(!ctx.isPointInPath(10, 10));
215 //verify(!ctx.isPointInPath(49, 10));
216 verify(ctx.isPointInPath(51, 10));
217 verify(ctx.isPointInPath(69, 10));
218 verify(!ctx.isPointInPath(71, 10));
225 verify(ctx.isPointInPath(10, 10));
226 //verify(!ctx.isPointInPath(30, 10));
240 verify(ctx.isPointInPath(5, 5));
241 verify(ctx.isPointInPath(25, 5));
242 verify(ctx.isPointInPath(45, 5));
243 verify(ctx.isPointInPath(5, 25));
244 verify(!ctx.isPointInPath(25, 25));
245 verify(ctx.isPointInPath(45, 25));
246 verify(ctx.isPointInPath(5, 45));
247 verify(ctx.isPointInPath(25, 45));
248 verify(ctx.isPointInPath(45, 45));
252 function test_fill() {
253 var ctx = canvas.getContext('2d');
255 ctx.fillStyle = '#f00';
256 ctx.fillRect(0, 0, 100, 50);
258 ctx.fillStyle = '#0f0';
265 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
269 ctx.fillStyle = '#00f';
270 ctx.fillRect(0, 0, 100, 50);
275 ctx.fillStyle = '#f00';
278 ctx.fillStyle = '#0f0';
281 //verify(Helper.comparePixel(ctx, 90,10, 0,255,0,255));
282 //verify(Helper.comparePixel(ctx, 10,40, 0,255,0,255));
285 ctx.fillStyle = '#000';
286 ctx.fillRect(0, 0, 100, 50);
288 ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
289 ctx.rect(0, 0, 100, 50);
291 ctx.rect(10, 10, 80, 30);
294 //verify(Helper.comparePixel(ctx, 50,25, 0,127,0,255, 1));
297 ctx.fillStyle = '#f00';
298 ctx.fillRect(0, 0, 100, 50);
300 ctx.fillStyle = '#0f0';
301 ctx.moveTo(-10, -10);
302 ctx.lineTo(110, -10);
305 ctx.lineTo(-10, -10);
312 //verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
315 ctx.fillStyle = '#0f0';
316 ctx.fillRect(0, 0, 100, 50);
318 ctx.fillStyle = '#f00';
319 ctx.moveTo(-10, -10);
320 ctx.lineTo(110, -10);
323 ctx.lineTo(-10, -10);
330 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
333 ctx.fillStyle = '#0f0';
334 ctx.fillRect(0, 0, 100, 50);
336 ctx.fillStyle = '#f00';
337 ctx.moveTo(-10, -10);
338 ctx.lineTo(110, -10);
347 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
350 ctx.fillStyle = '#f00';
351 ctx.fillRect(0, 0, 100, 50);
353 ctx.fillStyle = '#0f0';
354 ctx.moveTo(-10, -10);
355 ctx.lineTo(110, -10);
358 ctx.lineTo(-10, -10);
359 ctx.lineTo(-20, -20);
360 ctx.lineTo(120, -20);
363 ctx.lineTo(-20, -20);
370 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
373 function test_stroke() {
374 var ctx = canvas.getContext('2d');
376 ctx.fillStyle = '#0f0';
377 ctx.fillRect(0, 0, 100, 50);
379 ctx.strokeStyle = '#f00';
381 ctx.lineCap = 'round';
382 ctx.lineJoin = 'round';
389 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
392 ctx.fillStyle = '#000';
393 ctx.fillRect(0, 0, 100, 50);
395 ctx.strokeStyle = 'rgba(0, 255, 0, 0.5)';
403 //verify(Helper.comparePixel(ctx, 50,25, 0,127,0,255));
406 ctx.fillStyle = '#0f0';
407 ctx.fillRect(0, 0, 100, 50);
409 ctx.strokeStyle = '#f00';
411 ctx.lineCap = 'round';
412 ctx.lineJoin = 'round';
416 ctx.arcTo(50, 25, 150, 25, 10);
421 ctx.arc(50, 25, 10, 0, 0, false);
424 // verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
426 ctx.fillStyle = '#0f0';
427 ctx.fillRect(0, 0, 100, 50);
429 ctx.strokeStyle = '#f00';
431 ctx.lineCap = 'round';
432 ctx.lineJoin = 'round';
440 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
443 ctx.fillStyle = '#0f0';
444 ctx.fillRect(0, 0, 100, 50);
446 ctx.strokeStyle = '#f00';
448 ctx.lineJoin = 'miter';
449 ctx.miterLimit = 1.4;
452 ctx.moveTo(-1000, 200, 0, 0);
453 ctx.lineTo(-100, 200);
454 ctx.lineTo(-100, 200);
455 ctx.lineTo(-100, 200);
456 ctx.lineTo(-100, 1000);
459 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
462 ctx.fillStyle = '#0f0';
463 ctx.fillRect(0, 0, 100, 50);
465 ctx.strokeStyle = '#f00';
467 ctx.lineCap = 'round';
468 ctx.lineJoin = 'round';
472 ctx.quadraticCurveTo(50, 25, 50, 25);
477 ctx.bezierCurveTo(50, 25, 50, 25, 50, 25);
480 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
482 ctx.fillStyle = '#0f0';
483 ctx.fillRect(0, 0, 100, 50);
485 ctx.strokeStyle = '#f00';
487 ctx.lineCap = 'round';
488 ctx.lineJoin = 'round';
495 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
498 ctx.fillStyle = '#0f0';
499 ctx.fillRect(0, 0, 100, 50);
501 ctx.strokeStyle = '#f00';
503 ctx.lineCap = 'round';
504 ctx.lineJoin = 'round';
507 ctx.rect(50, 25, 0, 0);
510 ctx.strokeRect(50, 25, 0, 0);
512 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
515 ctx.fillStyle = '#f00';
516 ctx.fillRect(0, 0, 100, 50);
519 ctx.rect(25, 12.5, 50, 25);
522 ctx.strokeStyle = '#0f0';
527 ctx.rect(-25, -12.5, 150, 75);
530 ctx.strokeStyle = '#f00';
534 //verify(Helper.comparePixel(ctx, 0,0, 0,255,0,255));
535 //verify(Helper.comparePixel(ctx, 50,0, 0,255,0,255));
536 //verify(Helper.comparePixel(ctx, 99,0, 0,255,0,255));
537 //verify(Helper.comparePixel(ctx, 0,25, 0,255,0,255));
538 //verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
539 //verify(Helper.comparePixel(ctx, 99,25, 0,255,0,255));
540 //verify(Helper.comparePixel(ctx, 0,49, 0,255,0,255));
541 //verify(Helper.comparePixel(ctx, 50,49, 0,255,0,255));
542 //verify(Helper.comparePixel(ctx, 99,49, 0,255,0,255));
545 ctx.fillStyle = '#f00';
546 ctx.fillRect(0, 0, 100, 50);
549 ctx.rect(25, 12.5, 50, 25);
551 ctx.rotate(Math.PI/2);
553 ctx.strokeStyle = '#0f0';
558 ctx.rect(-25, -12.5, 150, 75);
560 ctx.rotate(Math.PI/2);
562 ctx.strokeStyle = '#f00';
566 //verify(Helper.comparePixel(ctx, 0,0, 0,255,0,255));
567 //verify(Helper.comparePixel(ctx, 50,0, 0,255,0,255));
568 //verify(Helper.comparePixel(ctx, 99,0, 0,255,0,255));
569 //verify(Helper.comparePixel(ctx, 0,25, 0,255,0,255));
570 //verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
571 //verify(Helper.comparePixel(ctx, 99,25, 0,255,0,255));
572 //verify(Helper.comparePixel(ctx, 0,49, 0,255,0,255));
573 //verify(Helper.comparePixel(ctx, 50,49, 0,255,0,255));
574 //verify(Helper.comparePixel(ctx, 99,49, 0,255,0,255));
577 ctx.fillStyle = '#f00';
578 ctx.fillRect(0, 0, 100, 50);
583 ctx.lineTo(201, -50);
584 ctx.rotate(Math.PI/4);
586 ctx.strokeStyle = '#0f0';
592 ctx.translate(-150, 0);
594 ctx.lineTo(199, -50);
595 ctx.rotate(Math.PI/4);
597 ctx.strokeStyle = '#f00';
603 ctx.translate(-150, 0);
605 ctx.lineTo(199, -50);
606 ctx.rotate(Math.PI/4);
608 ctx.strokeStyle = '#f00';
612 //verify(Helper.comparePixel(ctx, 0,0, 0,255,0,255));
613 //verify(Helper.comparePixel(ctx, 50,0, 0,255,0,255));
614 //verify(Helper.comparePixel(ctx, 99,0, 0,255,0,255));
615 //verify(Helper.comparePixel(ctx, 0,25, 0,255,0,255));
616 //verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
617 //verify(Helper.comparePixel(ctx, 99,25, 0,255,0,255));
618 //verify(Helper.comparePixel(ctx, 0,49, 0,255,0,255));
619 //verify(Helper.comparePixel(ctx, 50,49, 0,255,0,255));
620 //verify(Helper.comparePixel(ctx, 99,49, 0,255,0,255));
623 ctx.fillStyle = '#f00';
624 ctx.fillRect(0, 0, 100, 50);
627 ctx.moveTo(-100, 25);
628 ctx.lineTo(-100, -100);
629 ctx.lineTo(200, -100);
631 ctx.strokeStyle = '#f00';
635 ctx.strokeStyle = '#0f0';
638 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
641 ctx.fillStyle = '#f00';
642 ctx.fillRect(0, 0, 100, 50);
644 ctx.strokeStyle = '#0f0';
652 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
655 function test_clip() {
656 var ctx = canvas.getContext('2d');
658 ctx.fillStyle = '#f00';
659 ctx.fillRect(0, 0, 100, 50);
662 ctx.rect(0, 0, 100, 50);
665 ctx.fillStyle = '#0f0';
666 ctx.fillRect(0, 0, 100, 50);
668 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
671 ctx.fillStyle = '#0f0';
672 ctx.fillRect(0, 0, 100, 50);
675 ctx.rect(-100, 0, 100, 50);
678 ctx.fillStyle = '#f00';
679 ctx.fillRect(0, 0, 100, 50);
681 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
683 ctx.fillStyle = '#0f0';
684 ctx.fillRect(0, 0, 100, 50);
689 ctx.fillStyle = '#f00';
690 ctx.fillRect(0, 0, 100, 50);
692 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
694 ctx.fillStyle = '#0f0';
695 ctx.fillRect(0, 0, 100, 50);
698 ctx.rect(0, 0, 50, 50);
701 ctx.rect(50, 0, 50, 50)
704 ctx.fillStyle = '#f00';
705 ctx.fillRect(0, 0, 100, 50);
707 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
710 ctx.fillStyle = '#f00';
711 ctx.fillRect(0, 0, 100, 50);
713 ctx.fillStyle = '#0f0';
725 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
729 ctx.fillStyle = '#0f0';
730 ctx.fillRect(0, 0, 100, 50);
733 ctx.moveTo(-10, -10);
734 ctx.lineTo(110, -10);
737 ctx.lineTo(-10, -10);
744 ctx.fillStyle = '#f00';
745 ctx.fillRect(0, 0, 100, 50);
747 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
750 ctx.fillStyle = '#f00';
751 ctx.fillRect(0, 0, 100, 50);
754 ctx.moveTo(-10, -10);
755 ctx.lineTo(110, -10);
758 ctx.lineTo(-10, -10);
769 ctx.fillStyle = '#0f0';
770 ctx.fillRect(0, 0, 100, 50);
772 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
775 function test_moveTo() {
776 var ctx = canvas.getContext('2d');
778 ctx.fillStyle = '#f00';
779 ctx.fillRect(0, 0, 100, 50);
780 ctx.rect(0, 0, 10, 50);
785 ctx.fillStyle = '#0f0';
787 verify(Helper.comparePixel(ctx, 90,25, 0,255,0,255));
789 ctx.fillStyle = '#f00';
790 ctx.fillRect(0, 0, 100, 50);
795 ctx.strokeStyle = '#0f0';
798 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
801 ctx.fillStyle = '#0f0';
802 ctx.fillRect(0, 0, 100, 50);
808 ctx.fillStyle = '#f00';
810 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
815 ctx.moveTo(Infinity, 50);
816 ctx.moveTo(-Infinity, 50);
818 ctx.moveTo(0, Infinity);
819 ctx.moveTo(0, -Infinity);
821 ctx.moveTo(Infinity, Infinity);
824 ctx.fillStyle = '#0f0';
826 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
828 function test_lineTo() {
829 var ctx = canvas.getContext('2d');
831 ctx.fillStyle = '#f00';
832 ctx.fillRect(0, 0, 100, 50);
833 ctx.strokeStyle = '#0f0';
839 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
842 ctx.fillStyle = '#0f0';
843 ctx.fillRect(0, 0, 100, 50);
844 ctx.strokeStyle = '#f00';
849 // verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
852 ctx.fillStyle = '#f00';
853 ctx.fillRect(0, 0, 100, 50);
854 ctx.strokeStyle = '#0f0';
860 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
863 ctx.fillStyle = '#f00';
864 ctx.fillRect(0, 0, 100, 50);
865 ctx.strokeStyle = '#0f0';
868 ctx.moveTo(-100, -100);
872 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
877 ctx.lineTo(Infinity, 50);
878 ctx.lineTo(-Infinity, 50);
880 ctx.lineTo(0, Infinity);
881 ctx.lineTo(0, -Infinity);
883 ctx.lineTo(Infinity, Infinity);
886 ctx.fillStyle = '#0f0';
888 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
889 verify(Helper.comparePixel(ctx, 90,45, 0,255,0,255));
892 function test_bezierCurveTo() {
893 var ctx = canvas.getContext('2d');
895 ctx.fillStyle = '#f00';
896 ctx.fillRect(0, 0, 100, 50);
897 ctx.strokeStyle = '#0f0';
901 ctx.bezierCurveTo(100, 25, 100, 25, 100, 25);
903 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
906 ctx.fillStyle = '#0f0';
907 ctx.fillRect(0, 0, 100, 50);
908 ctx.strokeStyle = '#f00';
911 ctx.bezierCurveTo(100, 50, 200, 50, 200, 50);
913 //verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
914 //verify(Helper.comparePixel(ctx, 95,45, 0,255,0,255));
917 ctx.fillStyle = '#f00';
918 ctx.fillRect(0, 0, 100, 50);
919 ctx.strokeStyle = '#0f0';
922 ctx.bezierCurveTo(0, 25, 100, 25, 100, 25);
924 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
925 //verify(Helper.comparePixel(ctx, 5,45, 0,255,0,255));
930 ctx.bezierCurveTo(Infinity, 50, 0, 50, 0, 50);
931 ctx.bezierCurveTo(-Infinity, 50, 0, 50, 0, 50);
932 ctx.bezierCurveTo(NaN, 50, 0, 50, 0, 50);
933 ctx.bezierCurveTo(0, Infinity, 0, 50, 0, 50);
934 ctx.bezierCurveTo(0, -Infinity, 0, 50, 0, 50);
935 ctx.bezierCurveTo(0, NaN, 0, 50, 0, 50);
936 ctx.bezierCurveTo(0, 50, Infinity, 50, 0, 50);
937 ctx.bezierCurveTo(0, 50, -Infinity, 50, 0, 50);
938 ctx.bezierCurveTo(0, 50, NaN, 50, 0, 50);
939 ctx.bezierCurveTo(0, 50, 0, Infinity, 0, 50);
940 ctx.bezierCurveTo(0, 50, 0, -Infinity, 0, 50);
941 ctx.bezierCurveTo(0, 50, 0, NaN, 0, 50);
942 ctx.bezierCurveTo(0, 50, 0, 50, Infinity, 50);
943 ctx.bezierCurveTo(0, 50, 0, 50, -Infinity, 50);
944 ctx.bezierCurveTo(0, 50, 0, 50, NaN, 50);
945 ctx.bezierCurveTo(0, 50, 0, 50, 0, Infinity);
946 ctx.bezierCurveTo(0, 50, 0, 50, 0, -Infinity);
947 ctx.bezierCurveTo(0, 50, 0, 50, 0, NaN);
948 ctx.bezierCurveTo(Infinity, Infinity, 0, 50, 0, 50);
949 ctx.bezierCurveTo(Infinity, Infinity, Infinity, 50, 0, 50);
950 ctx.bezierCurveTo(Infinity, Infinity, Infinity, Infinity, 0, 50);
951 ctx.bezierCurveTo(Infinity, Infinity, Infinity, Infinity, Infinity, 50);
952 ctx.bezierCurveTo(Infinity, Infinity, Infinity, Infinity, Infinity, Infinity);
953 ctx.bezierCurveTo(Infinity, Infinity, Infinity, Infinity, 0, Infinity);
954 ctx.bezierCurveTo(Infinity, Infinity, Infinity, 50, Infinity, 50);
955 ctx.bezierCurveTo(Infinity, Infinity, Infinity, 50, Infinity, Infinity);
956 ctx.bezierCurveTo(Infinity, Infinity, Infinity, 50, 0, Infinity);
957 ctx.bezierCurveTo(Infinity, Infinity, 0, Infinity, 0, 50);
958 ctx.bezierCurveTo(Infinity, Infinity, 0, Infinity, Infinity, 50);
959 ctx.bezierCurveTo(Infinity, Infinity, 0, Infinity, Infinity, Infinity);
960 ctx.bezierCurveTo(Infinity, Infinity, 0, Infinity, 0, Infinity);
961 ctx.bezierCurveTo(Infinity, Infinity, 0, 50, Infinity, 50);
962 ctx.bezierCurveTo(Infinity, Infinity, 0, 50, Infinity, Infinity);
963 ctx.bezierCurveTo(Infinity, Infinity, 0, 50, 0, Infinity);
964 ctx.bezierCurveTo(Infinity, 50, Infinity, 50, 0, 50);
965 ctx.bezierCurveTo(Infinity, 50, Infinity, Infinity, 0, 50);
966 ctx.bezierCurveTo(Infinity, 50, Infinity, Infinity, Infinity, 50);
967 ctx.bezierCurveTo(Infinity, 50, Infinity, Infinity, Infinity, Infinity);
968 ctx.bezierCurveTo(Infinity, 50, Infinity, Infinity, 0, Infinity);
969 ctx.bezierCurveTo(Infinity, 50, Infinity, 50, Infinity, 50);
970 ctx.bezierCurveTo(Infinity, 50, Infinity, 50, Infinity, Infinity);
971 ctx.bezierCurveTo(Infinity, 50, Infinity, 50, 0, Infinity);
972 ctx.bezierCurveTo(Infinity, 50, 0, Infinity, 0, 50);
973 ctx.bezierCurveTo(Infinity, 50, 0, Infinity, Infinity, 50);
974 ctx.bezierCurveTo(Infinity, 50, 0, Infinity, Infinity, Infinity);
975 ctx.bezierCurveTo(Infinity, 50, 0, Infinity, 0, Infinity);
976 ctx.bezierCurveTo(Infinity, 50, 0, 50, Infinity, 50);
977 ctx.bezierCurveTo(Infinity, 50, 0, 50, Infinity, Infinity);
978 ctx.bezierCurveTo(Infinity, 50, 0, 50, 0, Infinity);
979 ctx.bezierCurveTo(Infinity, 50, Infinity, 50, 0, 50);
980 ctx.bezierCurveTo(Infinity, 50, Infinity, Infinity, 0, 50);
981 ctx.bezierCurveTo(Infinity, 50, Infinity, Infinity, Infinity, 50);
982 ctx.bezierCurveTo(Infinity, 50, Infinity, Infinity, Infinity, Infinity);
983 ctx.bezierCurveTo(Infinity, 50, Infinity, Infinity, 0, Infinity);
984 ctx.bezierCurveTo(Infinity, 50, Infinity, 50, Infinity, 50);
985 ctx.bezierCurveTo(Infinity, 50, Infinity, 50, Infinity, Infinity);
986 ctx.bezierCurveTo(Infinity, 50, Infinity, 50, 0, Infinity);
987 ctx.bezierCurveTo(Infinity, 50, 0, Infinity, 0, 50);
988 ctx.bezierCurveTo(Infinity, 50, 0, Infinity, Infinity, 50);
989 ctx.bezierCurveTo(Infinity, 50, 0, Infinity, Infinity, Infinity);
990 ctx.bezierCurveTo(Infinity, 50, 0, Infinity, 0, Infinity);
991 ctx.bezierCurveTo(Infinity, 50, 0, 50, Infinity, 50);
992 ctx.bezierCurveTo(Infinity, 50, 0, 50, Infinity, Infinity);
993 ctx.bezierCurveTo(Infinity, 50, 0, 50, 0, Infinity);
994 ctx.bezierCurveTo(0, Infinity, Infinity, 50, 0, 50);
995 ctx.bezierCurveTo(0, Infinity, Infinity, Infinity, 0, 50);
996 ctx.bezierCurveTo(0, Infinity, Infinity, Infinity, Infinity, 50);
997 ctx.bezierCurveTo(0, Infinity, Infinity, Infinity, Infinity, Infinity);
998 ctx.bezierCurveTo(0, Infinity, Infinity, Infinity, 0, Infinity);
999 ctx.bezierCurveTo(0, Infinity, Infinity, 50, Infinity, 50);
1000 ctx.bezierCurveTo(0, Infinity, Infinity, 50, Infinity, Infinity);
1001 ctx.bezierCurveTo(0, Infinity, Infinity, 50, 0, Infinity);
1002 ctx.bezierCurveTo(0, Infinity, 0, Infinity, 0, 50);
1003 ctx.bezierCurveTo(0, Infinity, 0, Infinity, Infinity, 50);
1004 ctx.bezierCurveTo(0, Infinity, 0, Infinity, Infinity, Infinity);
1005 ctx.bezierCurveTo(0, Infinity, 0, Infinity, 0, Infinity);
1006 ctx.bezierCurveTo(0, Infinity, 0, 50, Infinity, 50);
1007 ctx.bezierCurveTo(0, Infinity, 0, 50, Infinity, Infinity);
1008 ctx.bezierCurveTo(0, Infinity, 0, 50, 0, Infinity);
1009 ctx.bezierCurveTo(0, 50, Infinity, Infinity, 0, 50);
1010 ctx.bezierCurveTo(0, 50, Infinity, Infinity, Infinity, 50);
1011 ctx.bezierCurveTo(0, 50, Infinity, Infinity, Infinity, Infinity);
1012 ctx.bezierCurveTo(0, 50, Infinity, Infinity, 0, Infinity);
1013 ctx.bezierCurveTo(0, 50, Infinity, 50, Infinity, 50);
1014 ctx.bezierCurveTo(0, 50, Infinity, 50, Infinity, Infinity);
1015 ctx.bezierCurveTo(0, 50, Infinity, 50, 0, Infinity);
1016 ctx.bezierCurveTo(0, 50, 0, Infinity, Infinity, 50);
1017 ctx.bezierCurveTo(0, 50, 0, Infinity, Infinity, Infinity);
1018 ctx.bezierCurveTo(0, 50, 0, Infinity, 0, Infinity);
1019 ctx.bezierCurveTo(0, 50, 0, 50, Infinity, Infinity);
1020 ctx.lineTo(100, 50);
1022 ctx.fillStyle = '#0f0';
1024 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
1025 verify(Helper.comparePixel(ctx, 90,45, 0,255,0,255));
1028 ctx.fillStyle = '#f00';
1029 ctx.fillRect(0, 0, 100, 50);
1030 ctx.scale(1000, 1000);
1031 ctx.strokeStyle = '#0f0';
1032 ctx.lineWidth = 0.055;
1034 ctx.moveTo(-2, 3.1);
1035 ctx.bezierCurveTo(-2, -1, 2.1, -1, 2.1, 3.1);
1037 //verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
1038 //verify(Helper.comparePixel(ctx, 1,1, 0,255,0,255));
1039 //verify(Helper.comparePixel(ctx, 98,1, 0,255,0,255));
1040 //verify(Helper.comparePixel(ctx, 1,48, 0,255,0,255));
1041 //verify(Helper.comparePixel(ctx, 98,48, 0,255,0,255));
1044 ctx.fillStyle = '#f00';
1045 ctx.fillRect(0, 0, 100, 50);
1046 ctx.strokeStyle = '#0f0';
1049 ctx.moveTo(-2000, 3100);
1050 ctx.bezierCurveTo(-2000, -1000, 2100, -1000, 2100, 3100);
1052 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
1053 verify(Helper.comparePixel(ctx, 1,1, 0,255,0,255));
1054 verify(Helper.comparePixel(ctx, 98,1, 0,255,0,255));
1055 verify(Helper.comparePixel(ctx, 1,48, 0,255,0,255));
1056 verify(Helper.comparePixel(ctx, 98,48, 0,255,0,255));
1059 function test_quadraticCurveTo() {
1060 var ctx = canvas.getContext('2d');
1062 ctx.fillStyle = '#f00';
1063 ctx.fillRect(0, 0, 100, 50);
1064 ctx.strokeStyle = '#0f0';
1068 ctx.quadraticCurveTo(100, 25, 100, 25);
1070 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
1073 ctx.fillStyle = '#0f0';
1074 ctx.fillRect(0, 0, 100, 50);
1075 ctx.strokeStyle = '#f00';
1078 ctx.quadraticCurveTo(100, 50, 200, 50);
1080 //verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
1081 //verify(Helper.comparePixel(ctx, 95,45, 0,255,0,255));
1084 ctx.fillStyle = '#f00';
1085 ctx.fillRect(0, 0, 100, 50);
1086 ctx.strokeStyle = '#0f0';
1089 ctx.quadraticCurveTo(0, 25, 100, 25);
1091 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
1092 //verify(Helper.comparePixel(ctx, 5,45, 0,255,0,255));
1097 ctx.quadraticCurveTo(Infinity, 50, 0, 50);
1098 ctx.quadraticCurveTo(-Infinity, 50, 0, 50);
1099 ctx.quadraticCurveTo(NaN, 50, 0, 50);
1100 ctx.quadraticCurveTo(0, Infinity, 0, 50);
1101 ctx.quadraticCurveTo(0, -Infinity, 0, 50);
1102 ctx.quadraticCurveTo(0, NaN, 0, 50);
1103 ctx.quadraticCurveTo(0, 50, Infinity, 50);
1104 ctx.quadraticCurveTo(0, 50, -Infinity, 50);
1105 ctx.quadraticCurveTo(0, 50, NaN, 50);
1106 ctx.quadraticCurveTo(0, 50, 0, Infinity);
1107 ctx.quadraticCurveTo(0, 50, 0, -Infinity);
1108 ctx.quadraticCurveTo(0, 50, 0, NaN);
1109 ctx.quadraticCurveTo(Infinity, Infinity, 0, 50);
1110 ctx.quadraticCurveTo(Infinity, Infinity, Infinity, 50);
1111 ctx.quadraticCurveTo(Infinity, Infinity, Infinity, Infinity);
1112 ctx.quadraticCurveTo(Infinity, Infinity, 0, Infinity);
1113 ctx.quadraticCurveTo(Infinity, 50, Infinity, 50);
1114 ctx.quadraticCurveTo(Infinity, 50, Infinity, Infinity);
1115 ctx.quadraticCurveTo(Infinity, 50, 0, Infinity);
1116 ctx.quadraticCurveTo(0, Infinity, Infinity, 50);
1117 ctx.quadraticCurveTo(0, Infinity, Infinity, Infinity);
1118 ctx.quadraticCurveTo(0, Infinity, 0, Infinity);
1119 ctx.quadraticCurveTo(0, 50, Infinity, Infinity);
1120 ctx.lineTo(100, 50);
1122 ctx.fillStyle = '#0f0';
1124 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
1125 verify(Helper.comparePixel(ctx, 90,45, 0,255,0,255));
1128 ctx.fillStyle = '#f00';
1129 ctx.fillRect(0, 0, 100, 50);
1130 ctx.scale(1000, 1000);
1131 ctx.strokeStyle = '#0f0';
1132 ctx.lineWidth = 0.055;
1134 ctx.moveTo(-1, 1.05);
1135 ctx.quadraticCurveTo(0, -1, 1.2, 1.05);
1137 //verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
1138 //verify(Helper.comparePixel(ctx, 1,1, 0,255,0,255));
1139 //verify(Helper.comparePixel(ctx, 98,1, 0,255,0,255));
1140 //verify(Helper.comparePixel(ctx, 1,48, 0,255,0,255));
1141 //verify(Helper.comparePixel(ctx, 98,48, 0,255,0,255));
1144 ctx.fillStyle = '#f00';
1145 ctx.fillRect(0, 0, 100, 50);
1146 ctx.strokeStyle = '#0f0';
1149 ctx.moveTo(-1000, 1050);
1150 ctx.quadraticCurveTo(0, -1000, 1200, 1050);
1152 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
1153 //verify(Helper.comparePixel(ctx, 1,1, 0,255,0,255));
1154 //verify(Helper.comparePixel(ctx, 98,1, 0,255,0,255));
1155 verify(Helper.comparePixel(ctx, 1,48, 0,255,0,255));
1156 verify(Helper.comparePixel(ctx, 98,48, 0,255,0,255));
1158 function test_rect() {
1159 var ctx = canvas.getContext('2d');
1162 ctx.fillStyle = '#f00';
1163 ctx.fillRect(0, 0, 100, 50);
1164 ctx.fillStyle = '#0f0';
1165 ctx.rect(0, 0, 100, 50);
1167 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
1170 ctx.fillStyle = '#f00';
1171 ctx.fillRect(0, 0, 100, 50);
1172 ctx.strokeStyle = '#0f0';
1173 ctx.lineWidth = 200;
1174 ctx.lineJoin = 'miter';
1175 ctx.rect(100, 50, 100, 100);
1177 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
1180 ctx.fillStyle = '#f00';
1181 ctx.fillRect(0, 0, 100, 50);
1182 ctx.strokeStyle = '#0f0';
1183 ctx.lineWidth = 100;
1184 ctx.rect(200, 100, 400, 1000);
1185 ctx.lineTo(-2000, -1000);
1187 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
1190 ctx.fillStyle = '#f00';
1191 ctx.fillRect(0, 0, 100, 50);
1192 ctx.strokeStyle = '#0f0';
1193 ctx.lineWidth = 450;
1194 ctx.lineCap = 'round';
1195 ctx.lineJoin = 'bevel';
1196 ctx.rect(150, 150, 2000, 2000);
1197 ctx.lineTo(160, 160);
1199 verify(Helper.comparePixel(ctx, 1,1, 0,255,0,255));
1200 verify(Helper.comparePixel(ctx, 98,1, 0,255,0,255));
1201 verify(Helper.comparePixel(ctx, 1,48, 0,255,0,255));
1202 verify(Helper.comparePixel(ctx, 98,48, 0,255,0,255));
1205 ctx.fillStyle = '#f00';
1206 ctx.fillRect(0, 0, 100, 50);
1208 ctx.fillStyle = '#0f0';
1209 ctx.rect(0, 0, 50, 25);
1210 ctx.rect(100, 0, -50, 25);
1211 ctx.rect(0, 50, 50, -25);
1212 ctx.rect(100, 50, -50, -25);
1214 verify(Helper.comparePixel(ctx, 25,12, 0,255,0,255));
1215 verify(Helper.comparePixel(ctx, 75,12, 0,255,0,255));
1216 verify(Helper.comparePixel(ctx, 25,37, 0,255,0,255));
1217 verify(Helper.comparePixel(ctx, 75,37, 0,255,0,255));
1220 ctx.fillStyle = '#0f0';
1221 ctx.fillRect(0, 0, 100, 50);
1223 ctx.strokeStyle = '#f00';
1225 ctx.moveTo(-100, 25);
1226 ctx.lineTo(-50, 25);
1227 ctx.rect(200, 25, 1, 1);
1229 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
1235 ctx.rect(Infinity, 50, 1, 1);
1236 ctx.rect(-Infinity, 50, 1, 1);
1237 ctx.rect(NaN, 50, 1, 1);
1238 ctx.rect(0, Infinity, 1, 1);
1239 ctx.rect(0, -Infinity, 1, 1);
1240 ctx.rect(0, NaN, 1, 1);
1241 ctx.rect(0, 50, Infinity, 1);
1242 ctx.rect(0, 50, -Infinity, 1);
1243 ctx.rect(0, 50, NaN, 1);
1244 ctx.rect(0, 50, 1, Infinity);
1245 ctx.rect(0, 50, 1, -Infinity);
1246 ctx.rect(0, 50, 1, NaN);
1247 ctx.rect(Infinity, Infinity, 1, 1);
1248 ctx.rect(Infinity, Infinity, Infinity, 1);
1249 ctx.rect(Infinity, Infinity, Infinity, Infinity);
1250 ctx.rect(Infinity, Infinity, 1, Infinity);
1251 ctx.rect(Infinity, 50, Infinity, 1);
1252 ctx.rect(Infinity, 50, Infinity, Infinity);
1253 ctx.rect(Infinity, 50, 1, Infinity);
1254 ctx.rect(0, Infinity, Infinity, 1);
1255 ctx.rect(0, Infinity, Infinity, Infinity);
1256 ctx.rect(0, Infinity, 1, Infinity);
1257 ctx.rect(0, 50, Infinity, Infinity);
1258 ctx.lineTo(100, 50);
1260 ctx.fillStyle = '#0f0';
1262 //verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
1263 //verify(Helper.comparePixel(ctx, 90,45, 0,255,0,255));
1267 ctx.fillStyle = '#f00';
1268 ctx.fillRect(0, 0, 100, 50);
1269 ctx.strokeStyle = '#0f0';
1272 ctx.rect(45, 20, 10, 10);
1274 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
1277 ctx.fillStyle = '#0f0';
1278 ctx.fillRect(0, 0, 100, 50);
1280 ctx.fillStyle = '#f00';
1281 ctx.rect(0, 0, 50, 50);
1282 ctx.rect(100, 50, -50, -50);
1283 ctx.rect(0, 25, 100, -25);
1284 ctx.rect(100, 25, -100, 25);
1286 verify(Helper.comparePixel(ctx, 25,12, 0,255,0,255));
1287 verify(Helper.comparePixel(ctx, 75,12, 0,255,0,255));
1288 verify(Helper.comparePixel(ctx, 25,37, 0,255,0,255));
1289 verify(Helper.comparePixel(ctx, 75,37, 0,255,0,255));
1292 ctx.fillStyle = '#f00';
1293 ctx.fillRect(0, 0, 100, 50);
1294 ctx.strokeStyle = '#0f0';
1295 ctx.lineWidth = 100;
1297 ctx.rect(0, 50, 100, 0);
1299 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
1302 ctx.fillStyle = '#f00';
1303 ctx.fillRect(0, 0, 100, 50);
1304 ctx.strokeStyle = '#0f0';
1305 ctx.lineWidth = 100;
1307 ctx.rect(50, -100, 0, 250);
1309 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
1312 ctx.fillStyle = '#0f0';
1313 ctx.fillRect(0, 0, 100, 50);
1314 ctx.strokeStyle = '#f00';
1315 ctx.lineWidth = 100;
1317 ctx.rect(50, 25, 0, 0);
1319 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
1322 ctx.fillStyle = '#f00';
1323 ctx.fillRect(0, 0, 100, 50);
1324 ctx.strokeStyle = '#0f0';
1326 ctx.rect(100, 25, 0, 0);
1329 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
1332 ctx.fillStyle = '#0f0';
1333 ctx.fillRect(0, 0, 100, 50);
1334 ctx.strokeStyle = '#f00';
1337 ctx.rect(100, 25, 0, 0);
1339 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
1342 ctx.fillStyle = '#0f0';
1343 ctx.fillRect(0, 0, 100, 50);
1344 ctx.strokeStyle = '#f00';
1345 ctx.lineJoin = 'miter';
1346 ctx.miterLimit = 1.5;
1347 ctx.lineWidth = 200;
1349 ctx.rect(100, 25, 1000, 0);
1351 //verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
1354 function test_clearRect() {
1355 var ctx = canvas.getContext('2d');
1357 ctx.fillStyle = '#0f0';
1359 ctx.rect(0, 0, 100, 50);
1360 ctx.clearRect(0, 0, 16, 16);
1362 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
1364 function test_fillRect() {
1365 var ctx = canvas.getContext('2d');
1368 ctx.rect(0, 0, 100, 50);
1369 ctx.fillStyle = '#f00';
1370 ctx.fillRect(0, 0, 16, 16);
1371 ctx.fillStyle = '#0f0';
1373 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
1376 function test_strokeRect() {
1377 var ctx = canvas.getContext('2d');
1380 ctx.rect(0, 0, 100, 50);
1381 ctx.strokeStyle = '#f00';
1383 ctx.strokeRect(0, 0, 16, 16);
1384 ctx.fillStyle = '#0f0';
1387 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
1389 function test_transform() {
1390 var ctx = canvas.getContext('2d');
1392 ctx.fillStyle = '#f00';
1393 ctx.fillRect(0, 0, 100, 50);
1395 ctx.translate(-100, 0);
1396 ctx.rect(100, 0, 100, 50);
1397 ctx.translate(0, -100);
1398 ctx.fillStyle = '#0f0';
1401 //verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
1404 ctx.fillStyle = '#f00';
1405 ctx.fillRect(0, 0, 100, 50);
1406 ctx.fillStyle = '#0f0';
1408 ctx.translate(100, 0);
1410 ctx.translate(0, 50);
1412 ctx.translate(-100, 0);
1414 ctx.translate(1000, 1000);
1415 ctx.rotate(Math.PI/2);
1416 ctx.scale(0.1, 0.1);
1418 //verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));
1421 ctx.fillStyle = '#0f0';
1422 ctx.fillRect(0, 0, 100, 50);
1424 ctx.fillStyle = '#f00';
1425 ctx.translate(-100, 0);
1426 ctx.rect(0, 0, 100, 50);
1428 ctx.translate(100, 0);
1432 ctx.strokeStyle = '#f00';
1434 ctx.translate(0, -50);
1436 ctx.lineTo(100, 25);
1438 ctx.translate(0, 50);
1440 verify(Helper.comparePixel(ctx, 50,25, 0,255,0,255));