Index: third_party/WebKit/LayoutTests/fast/canvas/canvas-lineDash.html |
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/canvas-lineDash.html b/third_party/WebKit/LayoutTests/fast/canvas/canvas-lineDash.html |
index a546137f43bda341e208008dcdda6c89fff514a1..fb10f98c155591e00e690d772c481053c03a0c66 100644 |
--- a/third_party/WebKit/LayoutTests/fast/canvas/canvas-lineDash.html |
+++ b/third_party/WebKit/LayoutTests/fast/canvas/canvas-lineDash.html |
@@ -1,9 +1,110 @@ |
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
-<html> |
-<head> |
-<script src="../../resources/js-test.js"></script> |
-</head> |
+<script src="../../resources/testharness.js"></script> |
+<script src="../../resources/testharnessreport.js"></script> |
<body> |
-<script src="script-tests/canvas-lineDash.js"></script> |
+<script> |
+test(function(t) { |
+ |
+ var canvas = document.createElement('canvas'); |
+ document.body.appendChild(canvas); |
+ canvas.setAttribute('width', '700'); |
+ canvas.setAttribute('height', '700'); |
+ var ctx = canvas.getContext('2d'); |
+ |
+ // Verify default values. |
+ assert_equals(ctx.lineDashOffset, 0); |
+ |
+ // Set dash-style. |
+ ctx.setLineDash([15, 10]); |
+ ctx.lineDashOffset = 5; |
+ ctx.strokeRect (10,10,100,100); |
+ |
+ // Verify dash and offset. |
+ var lineDash; |
+ lineDash = ctx.getLineDash(); |
+ assert_equals(lineDash[0], 15); |
+ assert_equals(lineDash[1], 10); |
+ assert_equals(ctx.lineDashOffset, 5); |
+ |
+ // Verify setting line dash to sequence of nulls is interpreted as zeros |
+ ctx.setLineDash([null, null]); |
+ lineDash = ctx.getLineDash(); |
+ assert_equals(lineDash[0], 0); |
+ assert_equals(lineDash[1], 0); |
+ |
+ // Set dash style to even number |
+ ctx.setLineDash([5, 10, 15]); |
+ ctx.strokeRect(20, 20, 120, 120); |
+ |
+ // Verify dash pattern is normalized |
+ lineDash = ctx.getLineDash(); |
+ assert_equals(lineDash[0], 5); |
+ assert_equals(lineDash[1], 10); |
+ assert_equals(lineDash[2], 15); |
+ assert_equals(lineDash[3], 5); |
+ assert_equals(lineDash[4], 10); |
+ assert_equals(lineDash[5], 15); |
+ |
+ // Verify that conversion from string works |
+ ctx.setLineDash(["1", 2]); |
+ lineDash = ctx.getLineDash(); |
+ assert_equals(lineDash[0], 1); |
+ assert_equals(lineDash[1], 2); |
+ |
+ // Verify that line dash offset persists after |
+ // clearRect (which causes a save/restore of the context |
+ // state to the stack). |
+ ctx.clearRect(0, 0, 700, 700); |
+ assert_equals(ctx.lineDashOffset, 5); |
+ |
+ // Verify dash rendering |
+ ctx.setLineDash([20, 10]); |
+ ctx.lineDashOffset = 0; |
+ ctx.lineWidth = 4; // To make the test immune to plaform anti-aliasing discrepancies |
+ ctx.strokeStyle = '#00FF00'; |
+ ctx.strokeRect(10.5, 10.5, 30, 30); |
+ |
+ assert_array_equals(ctx.getImageData(25, 10, 1, 1).data, [0, 255, 0, 255]); |
+ assert_array_equals(ctx.getImageData(35, 10, 1, 1).data, [0, 0, 0, 0]); |
+ assert_array_equals(ctx.getImageData(40, 25, 1, 1).data, [0, 255, 0, 255]); |
+ assert_array_equals(ctx.getImageData(40, 35, 1, 1).data, [0, 0, 0, 0]); |
+ assert_array_equals(ctx.getImageData(25, 40, 1, 1).data, [0, 255, 0, 255]); |
+ assert_array_equals(ctx.getImageData(15, 40, 1, 1).data, [0, 0, 0, 0]); |
+ assert_array_equals(ctx.getImageData(10, 25, 1, 1).data, [0, 255, 0, 255]); |
+ assert_array_equals(ctx.getImageData(10, 15, 1, 1).data, [0, 0, 0, 0]); |
+ |
+ // Verify that lineDashOffset works as expected |
+ ctx.lineDashOffset = 20; |
+ ctx.strokeRect(50.5, 10.5, 30, 30); |
+ assert_array_equals(ctx.getImageData(55, 10, 1, 1).data, [0, 0, 0, 0]); |
+ assert_array_equals(ctx.getImageData(65, 10, 1, 1).data, [0, 255, 0, 255]); |
+ assert_array_equals(ctx.getImageData(80, 15, 1, 1).data, [0, 0, 0, 0]); |
+ assert_array_equals(ctx.getImageData(80, 25, 1, 1).data, [0, 255, 0, 255]); |
+ assert_array_equals(ctx.getImageData(75, 40, 1, 1).data, [0, 0, 0, 0]); |
+ assert_array_equals(ctx.getImageData(65, 40, 1, 1).data, [0, 255, 0, 255]); |
+ assert_array_equals(ctx.getImageData(50, 35, 1, 1).data, [0, 0, 0, 0]); |
+ assert_array_equals(ctx.getImageData(50, 25, 1, 1).data, [0, 255, 0, 255]); |
+ |
+ // Verify negative lineDashOffset |
+ ctx.lineDashOffset = -10; |
+ ctx.strokeRect(90.5, 10.5, 30, 30); |
+ assert_array_equals(ctx.getImageData(95, 10, 1, 1).data, [0, 0, 0, 0]); |
+ assert_array_equals(ctx.getImageData(105, 10, 1, 1).data, [0, 255, 0, 255]); |
+ assert_array_equals(ctx.getImageData(120, 15, 1, 1).data, [0, 0, 0, 0]); |
+ assert_array_equals(ctx.getImageData(120, 25, 1, 1).data, [0, 255, 0, 255]); |
+ assert_array_equals(ctx.getImageData(115, 40, 1, 1).data, [0, 0, 0, 0]); |
+ assert_array_equals(ctx.getImageData(105, 40, 1, 1).data, [0, 255, 0, 255]); |
+ assert_array_equals(ctx.getImageData(90, 35, 1, 1).data, [0, 0, 0, 0]); |
+ assert_array_equals(ctx.getImageData(90, 25, 1, 1).data, [0, 255, 0, 255]); |
+ |
+ // Verify that all zero dash sequence results in no dashing |
+ ctx.setLineDash([0, 0]); |
+ ctx.lineDashOffset = 0; |
+ ctx.strokeRect(130.5, 10.5, 30, 30); |
+ assert_array_equals(ctx.getImageData(130, 10, 1, 1).data, [0, 255, 0, 255]); |
+ assert_array_equals(ctx.getImageData(130, 15, 1, 1).data, [0, 255, 0, 255]); |
+ assert_array_equals(ctx.getImageData(130, 25, 1, 1).data, [0, 255, 0, 255]); |
+ assert_array_equals(ctx.getImageData(130, 35, 1, 1).data, [0, 255, 0, 255]); |
+ |
+}, "Basic test for setLineDash, getLineDash and lineDashOffset"); |
+</script> |
</body> |
-</html> |