OLD | NEW |
1 description("Test calcMode discrete with from-to animation on colors with alpha
channel. You should see a green 100x100 rect and only PASS messages"); | 1 description("Test calcMode discrete with from-to animation on colors with alpha
channel. You should see a green 100x100 rect and only PASS messages"); |
2 createSVGTestCase(); | 2 createSVGTestCase(); |
3 | 3 |
4 // Setup test document | 4 // Setup test document |
5 var rect = createSVGElement("rect"); | 5 var rect = createSVGElement("rect"); |
6 rect.setAttribute("id", "rect"); | 6 rect.setAttribute("id", "rect"); |
7 rect.setAttribute("width", "100"); | 7 rect.setAttribute("width", "100"); |
8 rect.setAttribute("height", "100"); | 8 rect.setAttribute("height", "100"); |
9 rect.setAttribute("color", "rgba(0,255,255, 0.4)"); | 9 rect.setAttribute("color", "rgba(0,255,255, 0.4)"); |
10 rect.setAttribute("fill", "currentColor"); | 10 rect.setAttribute("fill", "currentColor"); |
11 rect.setAttribute("onclick", "executeTest()"); | 11 rect.setAttribute("onclick", "executeTest()"); |
12 | 12 |
13 var animate = createSVGElement("animate"); | 13 var animate = createSVGElement("animate"); |
14 animate.setAttribute("id", "animation"); | 14 animate.setAttribute("id", "animation"); |
15 animate.setAttribute("attributeName", "color"); | 15 animate.setAttribute("attributeName", "color"); |
16 animate.setAttribute("from", "rgba(255,0,0,0.6)"); | 16 animate.setAttribute("from", "rgba(255,0,0,0.6)"); |
17 animate.setAttribute("to", "rgba(0,255,255,0.8)"); | 17 animate.setAttribute("to", "rgba(0,255,255,0.8)"); |
18 animate.setAttribute("begin", "click"); | 18 animate.setAttribute("begin", "click"); |
19 animate.setAttribute("dur", "4s"); | 19 animate.setAttribute("dur", "4s"); |
20 animate.setAttribute("calcMode", "discrete"); | 20 animate.setAttribute("calcMode", "discrete"); |
21 rect.appendChild(animate); | 21 rect.appendChild(animate); |
22 rootSVGElement.appendChild(rect); | 22 rootSVGElement.appendChild(rect); |
23 | 23 |
24 function parseAlphaFromColor() { | |
25 // As alpha is not exposed via CSS OM, we have to parse it from the color st
ring, to be able | |
26 // to use shouldBeCloseEnough() - otherwise we can't allow tolerances, and t
his test is flaky. | |
27 colorString = getComputedStyle(rect).getPropertyValue('color'); | |
28 return colorString.replace(/rgba.*\,/, "").replace(/\)$/, ""); | |
29 } | |
30 | |
31 function expectRGBAColor(red, green, blue, alpha) { | 24 function expectRGBAColor(red, green, blue, alpha) { |
32 rgbColor = getComputedStyle(rect).getPropertyCSSValue('color').getRGBColorVa
lue(); | 25 colors = getComputedStyle(rect).color.replace("rgba(", "").replace(")", "").
split(","); |
33 shouldBeCloseEnough("rgbColor.red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER
)", "" + red, 1); | 26 shouldBeCloseEnough("colors[0]", "" + red, 1); |
34 shouldBeCloseEnough("rgbColor.green.getFloatValue(CSSPrimitiveValue.CSS_NUMB
ER)", "" + green, 1); | 27 shouldBeCloseEnough("colors[1]", "" + green, 1); |
35 shouldBeCloseEnough("rgbColor.blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBE
R)", "" + blue, 1); | 28 shouldBeCloseEnough("colors[2]", "" + blue, 1); |
36 shouldBeCloseEnough("parseAlphaFromColor()", "" + alpha, 0.1); | 29 shouldBeCloseEnough("colors[3]", "" + alpha, 0.1); |
37 } | 30 } |
38 | 31 |
39 // Setup animation test | 32 // Setup animation test |
40 function sample1() { | 33 function sample1() { |
41 expectRGBAColor(255, 0, 0, 0.6); | 34 expectRGBAColor(255, 0, 0, 0.6); |
42 } | 35 } |
43 | 36 |
44 function sample2() { | 37 function sample2() { |
45 expectRGBAColor(0, 255, 255, 0.8); | 38 expectRGBAColor(0, 255, 255, 0.8); |
46 } | 39 } |
(...skipping 10 matching lines...) Expand all Loading... |
57 ["animation", 1.0, sample1], | 50 ["animation", 1.0, sample1], |
58 ["animation", 3.0, sample2], | 51 ["animation", 3.0, sample2], |
59 ["animation", 3.999, sample2], | 52 ["animation", 3.999, sample2], |
60 ["animation", 4.001, sample3] | 53 ["animation", 4.001, sample3] |
61 ]; | 54 ]; |
62 | 55 |
63 runAnimationTest(expectedValues); | 56 runAnimationTest(expectedValues); |
64 } | 57 } |
65 | 58 |
66 var successfullyParsed = true; | 59 var successfullyParsed = true; |
OLD | NEW |