| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <script> |
| |
| function pixelShouldBe(x, y, color) { |
| assert_array_equals(context.getImageData(x, y, 1, 1).data, color); |
| } |
| |
| function createCanvasImage(width, height, color) { |
| var c = document.createElement("canvas"); |
| c.width = width; |
| c.height = height; |
| var context = c.getContext("2d"); |
| context.fillStyle = color; |
| context.fillRect(0, 0, width, height); |
| return c; |
| } |
| |
| var green1x1 = createCanvasImage(1, 1, "green"); |
| var green100x50 = createCanvasImage(100, 50, "green"); |
| |
| var canvas = document.createElement("canvas"); |
| canvas.width = 100; |
| canvas.height = 50; |
| var context = canvas.getContext("2d"); |
| context.fillStyle="red"; |
| context.fillRect(0, 0, 100, 50); |
| |
| test(function () { |
| var pattern = context.createPattern(green1x1, null); |
| context.fillStyle = pattern; |
| context.fillRect(0, 0, 100, 50); |
| pixelShouldBe(1, 1, [0, 128, 0, 255]); |
| pixelShouldBe(98, 1, [0, 128, 0, 255]); |
| pixelShouldBe(1, 48, [0, 128, 0, 255]); |
| pixelShouldBe(98, 48, [0, 128, 0, 255]); |
| |
| assert_throws_dom("SYNTAX_ERR", function() { |
| context.createPattern(green1x1, 'null'); |
| }); |
| assert_throws_dom("SYNTAX_ERR", function() { |
| context.createPattern(green1x1, undefined); |
| }); |
| assert_throws_dom("SYNTAX_ERR", function() { |
| context.createPattern(green1x1, 'undefined'); |
| }); |
| assert_throws_dom("SYNTAX_ERR", function() { |
| context.createPattern(green1x1, {oString:function(){ return null;}}); |
| }); |
| assert_throws_js(TypeError, function() { |
| context.createPattern(null, ''); |
| }); |
| assert_throws_js(TypeError, function() { |
| context.createPattern(undefined, ''); |
| }); |
| assert_throws_js(TypeError, function() { |
| context.createPattern({}, ''); |
| }); |
| assert_throws_js(TypeError, function() { |
| context.createPattern([], ''); |
| }); |
| |
| pattern = context.createPattern(green1x1, ''); |
| context.fillStyle = pattern; |
| context.fillRect(0, 0, 100, 50); |
| pixelShouldBe(1, 1, [0, 128, 0, 255]); |
| pixelShouldBe(98, 1, [0, 128, 0, 255]); |
| pixelShouldBe(1, 48, [0, 128, 0, 255]); |
| pixelShouldBe(98, 48, [0, 128, 0, 255]); |
| |
| pattern = context.createPattern(green1x1, {toString:function(){ return 'repeat';}}); |
| context.fillStyle = pattern; |
| context.fillRect(0, 0, 100, 50); |
| pixelShouldBe(1, 1, [0, 128, 0, 255]); |
| pixelShouldBe(98, 1, [0, 128, 0, 255]); |
| pixelShouldBe(1, 48, [0, 128, 0, 255]); |
| pixelShouldBe(98, 48, [0, 128, 0, 255]); |
| |
| context.fillStyle = "green"; |
| context.fillRect(0, 0, 50, 50); |
| var pattern = context.createPattern(green100x50, "no-repeat"); |
| context.fillStyle = pattern; |
| context.translate(50, 0); |
| context.fillRect(-50, 0, 100, 50); |
| pixelShouldBe(1, 1, [0, 128, 0, 255]); |
| pixelShouldBe(98, 1, [0, 128, 0, 255]); |
| pixelShouldBe(1, 48, [0, 128, 0, 255]); |
| pixelShouldBe(98, 48, [0, 128, 0, 255]); |
| }, "Test the behavior of pattern use and construction."); |
| </script> |