Chromium Code Reviews| Index: tests/html/canvasrenderingcontext2d_test.dart |
| diff --git a/tests/html/canvasrenderingcontext2d_test.dart b/tests/html/canvasrenderingcontext2d_test.dart |
| index 8de0001d8540ccf535173a8d836e964ea7814255..698cc7fac5c3a6d1910621b8e8fe06b52f1e02f6 100644 |
| --- a/tests/html/canvasrenderingcontext2d_test.dart |
| +++ b/tests/html/canvasrenderingcontext2d_test.dart |
| @@ -159,14 +159,15 @@ main() { |
| }); |
| test('putImageData', () { |
| + context.fillStyle = 'green'; |
| + context.fillRect(0, 0, canvas.width, canvas.height); |
| + |
| ImageData expectedData = context.getImageData(0, 0, 10, 10); |
| expectedData.data[0] = 25; |
| expectedData.data[1] = 65; |
| expectedData.data[2] = 255; |
| // Set alpha to 255 to make the pixels show up. |
| expectedData.data[3] = 255; |
| - context.fillStyle = 'green'; |
| - context.fillRect(0, 0, canvas.width, canvas.height); |
| context.putImageData(expectedData, 0, 0); |
| @@ -174,6 +175,71 @@ main() { |
| // Make sure that we read back what we wrote. |
| expect(resultingData.data, expectedData.data); |
| }); |
| + |
| + test('putImageData dirty rectangle', () { |
| + context.fillStyle = 'green'; |
| + context.fillRect(0, 0, canvas.width, canvas.height); |
| + |
| + ImageData drawnData = context.getImageData(0, 0, 10, 10); |
| + drawnData.data[0] = 25; |
|
Anton Muhin
2013/05/14 06:17:34
I might be overvaluing cascade syntax, but somethi
Andrei Mouravski
2013/05/21 09:38:49
Not going to worry about it for now.
On 2013/05/
|
| + drawnData.data[1] = 65; |
| + drawnData.data[2] = 255; |
| + drawnData.data[3] = 255; |
| + |
| + // Draw these pixels to the 2nd pixel. |
| + drawnData.data[2 * 4 + 0] = 25; |
| + drawnData.data[2 * 4 + 1] = 65; |
| + drawnData.data[2 * 4 + 2] = 255; |
| + drawnData.data[2 * 4 + 3] = 255; |
| + |
| + // Draw these pixels to the 8th pixel. |
| + drawnData.data[7 * 4 + 0] = 25; |
| + drawnData.data[7 * 4 + 1] = 65; |
| + drawnData.data[7 * 4 + 2] = 255; |
| + drawnData.data[7 * 4 + 3] = 255; |
| + |
| + // Use a dirty rectangle to limit what pixels are drawn. |
| + context.putImageData(drawnData, 0, 0, 1, 0, 5, 5); |
| + |
| + // Expect the data to be all green, as we skip all drawn pixels. |
| + ImageData expectedData = context.createImageData(10, 10); |
| + for (int i = 0; i < expectedData.data.length; i++) { |
| + switch (i % 4) { |
| + case 0: |
| + expectedData.data[i] = 0; |
| + break; |
| + case 1: |
| + expectedData.data[i] = 128; |
| + break; |
| + case 2: |
| + expectedData.data[i] = 0; |
| + break; |
| + case 3: |
| + expectedData.data[i] = 255; |
| + break; |
| + } |
| + } |
| + // Third pixel was copied. |
| + expectedData.data[2 * 4 + 0] = 25; |
| + expectedData.data[2 * 4 + 1] = 65; |
| + expectedData.data[2 * 4 + 2] = 255; |
| + expectedData.data[2 * 4 + 3] = 255; |
| + |
| + // Make sure that our data is all green. |
| + var resultingData = context.getImageData(0, 0, 10, 10); |
| + expect(resultingData.data, expectedData.data); |
| + }); |
| + |
| + test('putImageData throws with wrong number of arguments', () { |
| + ImageData expectedData = context.getImageData(0, 0, 10, 10); |
| + |
| + expect(() => context.putImageData(expectedData, 0, 0, 1), |
| + throwsArgumentError); |
| + expect(() => context.putImageData(expectedData, 0, 0, 1, 1), |
| + throwsArgumentError); |
| + expect(() => context.putImageData(expectedData, 0, 0, 1, 1, 5), |
| + throwsArgumentError); |
| + }); |
| }); |
| group('arc', () { |