Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(71)

Side by Side Diff: third_party/WebKit/LayoutTests/fast/canvas/script-tests/canvas-lineDash.js

Issue 2681423002: Use testharness.js instead of js-test.js in LayoutTests/fast/canvas tests. (Closed)
Patch Set: Adding exceptions to TestExpectations Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 description("Basic test for setLineDash, getLineDash and lineDashOffset");
2
3 var canvas = document.createElement('canvas');
4 document.body.appendChild(canvas);
5 canvas.setAttribute('width', '700');
6 canvas.setAttribute('height', '700');
7 var ctx = canvas.getContext('2d');
8
9 function dataToArray(data) {
10 var result = new Array(data.length)
11 for (var i = 0; i < data.length; i++)
12 result[i] = data[i];
13 return result;
14 }
15
16 function getPixel(x, y) {
17 var data = ctx.getImageData(x,y,1,1);
18 if (!data) // getImageData failed, which should never happen
19 return [-1,-1,-1,-1];
20 return dataToArray(data.data);
21 }
22
23 function pixelShouldBe(x, y, colour) {
24 shouldBe("getPixel(" + [x, y] +")", "["+colour+"]");
25 }
26
27 // Verify default values.
28 shouldBe('ctx.lineDashOffset', '0');
29
30 // Set dash-style.
31 ctx.setLineDash([15, 10]);
32 ctx.lineDashOffset = 5;
33 ctx.strokeRect (10,10,100,100);
34
35 // Verify dash and offset.
36 var lineDash;
37 lineDash = ctx.getLineDash();
38 shouldBe('lineDash[0]', '15');
39 shouldBe('lineDash[1]', '10');
40 shouldBe('ctx.lineDashOffset', '5');
41
42 // Verify setting line dash to sequence of nulls is interpreted as zeros
43 ctx.setLineDash([null, null]);
44 lineDash = ctx.getLineDash();
45 shouldBe('lineDash[0]', '0');
46 shouldBe('lineDash[1]', '0');
47
48 // Set dash style to even number
49 ctx.setLineDash([5, 10, 15]);
50 ctx.strokeRect(20, 20, 120, 120);
51
52 // Verify dash pattern is normalized
53 lineDash = ctx.getLineDash();
54 shouldBe('lineDash[0]', '5');
55 shouldBe('lineDash[1]', '10');
56 shouldBe('lineDash[2]', '15');
57 shouldBe('lineDash[3]', '5');
58 shouldBe('lineDash[4]', '10');
59 shouldBe('lineDash[5]', '15');
60
61 // Verify that conversion from string works
62 ctx.setLineDash(["1", 2]);
63 lineDash = ctx.getLineDash();
64 shouldBe('lineDash[0]', '1');
65 shouldBe('lineDash[1]', '2');
66
67 // Verify that line dash offset persists after
68 // clearRect (which causes a save/restore of the context
69 // state to the stack).
70 ctx.clearRect(0, 0, 700, 700);
71 shouldBe('ctx.lineDashOffset', '5');
72
73 // Verify dash rendering
74 ctx.setLineDash([20, 10]);
75 ctx.lineDashOffset = 0;
76 ctx.lineWidth = 4; // To make the test immune to plaform anti-aliasing discrepan cies
77 ctx.strokeStyle = '#00FF00';
78 ctx.strokeRect(10.5, 10.5, 30, 30);
79
80 pixelShouldBe(25, 10, [0, 255, 0, 255]);
81 pixelShouldBe(35, 10, [0, 0, 0, 0]);
82 pixelShouldBe(40, 25, [0, 255, 0, 255]);
83 pixelShouldBe(40, 35, [0, 0, 0, 0]);
84 pixelShouldBe(25, 40, [0, 255, 0, 255]);
85 pixelShouldBe(15, 40, [0, 0, 0, 0]);
86 pixelShouldBe(10, 25, [0, 255, 0, 255]);
87 pixelShouldBe(10, 15, [0, 0, 0, 0]);
88
89 // Verify that lineDashOffset works as expected
90 ctx.lineDashOffset = 20;
91 ctx.strokeRect(50.5, 10.5, 30, 30);
92 pixelShouldBe(55, 10, [0, 0, 0, 0]);
93 pixelShouldBe(65, 10, [0, 255, 0, 255]);
94 pixelShouldBe(80, 15, [0, 0, 0, 0]);
95 pixelShouldBe(80, 25, [0, 255, 0, 255]);
96 pixelShouldBe(75, 40, [0, 0, 0, 0]);
97 pixelShouldBe(65, 40, [0, 255, 0, 255]);
98 pixelShouldBe(50, 35, [0, 0, 0, 0]);
99 pixelShouldBe(50, 25, [0, 255, 0, 255]);
100
101 // Verify negative lineDashOffset
102 ctx.lineDashOffset = -10;
103 ctx.strokeRect(90.5, 10.5, 30, 30);
104 pixelShouldBe(95, 10, [0, 0, 0, 0]);
105 pixelShouldBe(105, 10, [0, 255, 0, 255]);
106 pixelShouldBe(120, 15, [0, 0, 0, 0]);
107 pixelShouldBe(120, 25, [0, 255, 0, 255]);
108 pixelShouldBe(115, 40, [0, 0, 0, 0]);
109 pixelShouldBe(105, 40, [0, 255, 0, 255]);
110 pixelShouldBe(90, 35, [0, 0, 0, 0]);
111 pixelShouldBe(90, 25, [0, 255, 0, 255]);
112
113 // Verify that all zero dash sequence results in no dashing
114 ctx.setLineDash([0, 0]);
115 ctx.lineDashOffset = 0;
116 ctx.strokeRect(130.5, 10.5, 30, 30);
117 pixelShouldBe(130, 10, [0, 255, 0, 255]);
118 pixelShouldBe(130, 15, [0, 255, 0, 255]);
119 pixelShouldBe(130, 25, [0, 255, 0, 255]);
120 pixelShouldBe(130, 35, [0, 255, 0, 255]);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698