OLD | NEW |
1 description("Test the parsing of the -webkit-image-set function."); | 1 description("Test the parsing of the -webkit-image-set function."); |
2 | 2 |
3 function jsWrapperClass(node) | 3 var result; |
4 { | |
5 if (!node) | |
6 return "[null]"; | |
7 var string = Object.prototype.toString.apply(node); | |
8 return string.substr(8, string.length - 9); | |
9 } | |
10 | 4 |
11 function shouldBeType(expression, className, prototypeName, constructorName) | 5 function testImageSetRule(description, property, rule, expectedTexts) |
12 { | |
13 if (!prototypeName) | |
14 prototypeName = className + "Prototype"; | |
15 if (!constructorName) | |
16 constructorName = className + "Constructor"; | |
17 shouldBe("jsWrapperClass(" + expression + ")", "'" + className + "'"); | |
18 shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + prototypeName
+ "'"); | |
19 shouldBe("jsWrapperClass(" + expression + ".constructor)", "'" + constructor
Name + "'"); | |
20 } | |
21 | |
22 // These have to be global for the test helpers to see them. | |
23 var imageSetRule, subRule; | |
24 | |
25 function testImageSetRule(description, property, rule, expectedLength, expectedT
exts) | |
26 { | 6 { |
27 debug(""); | 7 debug(""); |
28 debug(description + " : " + rule); | 8 debug(description + " : " + rule); |
29 | 9 |
30 var div = document.createElement("div"); | 10 var div = document.createElement("div"); |
31 div.setAttribute("style", property + ": -webkit-image-set(" + rule + ")"); | 11 rule = "-webkit-image-set(" + rule + ")"; |
| 12 div.style[property] = rule; |
32 document.body.appendChild(div); | 13 document.body.appendChild(div); |
33 | 14 result = div.style[property].replace(/url\([^#]*#/g, "url(#"); |
34 imageSetRule = div.style.getPropertyCSSValue(property); | 15 shouldBeEqualToString("result", rule); |
35 shouldBeType("imageSetRule", "CSSValueList"); | |
36 | |
37 if (imageSetRule) { | |
38 if (jsWrapperClass(imageSetRule[0]) == "CSSValueList") { | |
39 // The content property returns a CSSValueList anyway, so to get to
the | |
40 // imageSet CSS value list, we have to look at the first entry in th
e | |
41 // content value list. | |
42 imageSetRule = imageSetRule[0]; | |
43 } | |
44 } | |
45 | |
46 shouldBe("imageSetRule.length", "" + expectedLength); // shouldBe expects st
ring arguments | |
47 | |
48 if (imageSetRule) { | |
49 for (var i = 0; i < expectedLength; i++) { | |
50 string = imageSetRule[i]; | |
51 if (i % 2 == 0) { | |
52 subRule = string.cssText.split('#')[1]; | |
53 subRule = subRule.split(')')[0]; | |
54 shouldBe("subRule", "'" + expectedTexts[i] + "'"); | |
55 } else { | |
56 subRule = string; | |
57 shouldBe("subRule.cssText", "'" + expectedTexts[i] + "'"); | |
58 } | |
59 } | |
60 } | |
61 | |
62 document.body.removeChild(div); | 16 document.body.removeChild(div); |
63 } | 17 } |
64 | 18 |
65 testImageSetRule("Single value for background-image", | 19 testImageSetRule("Single value for background-image", |
66 "background-image", | 20 "background-image", |
67 "url('#a') 1x", 2, | 21 "url(#a) 1x"); |
68 ["a", "1"]); | |
69 | 22 |
70 testImageSetRule("Multiple values for background-image", | 23 testImageSetRule("Multiple values for background-image", |
71 "background-image", | 24 "background-image", |
72 "url('#a') 1x, url('#b') 2x", 4, | 25 "url(#a) 1x, url(#b) 2x"); |
73 ["a", "1", "b", "2"]); | |
74 | 26 |
75 testImageSetRule("Multiple values for background-image, out of order", | 27 testImageSetRule("Multiple values for background-image, out of order", |
76 "background-image", | 28 "background-image", |
77 "url('#c') 3x, url('#b') 2x, url('#a') 1x", 6, | 29 "url(#c) 3x, url(#b) 2x, url(#a) 1x"); |
78 ["c", "3", "b", "2", "a", "1"]); | |
79 | 30 |
80 testImageSetRule("Single value for content", | 31 testImageSetRule("Single value for content", |
81 "content", | 32 "content", |
82 "url('#a') 1x", 2, | 33 "url(#a) 1x"); |
83 ["a", "1"]); | |
84 | 34 |
85 testImageSetRule("Multiple values for content", | 35 testImageSetRule("Multiple values for content", |
86 "content", | 36 "content", |
87 "url('#a') 1x, url('#b') 2x", 4, | 37 "url(#a) 1x, url(#b) 2x"); |
88 ["a", "1", "b", "2"]); | |
89 | 38 |
90 testImageSetRule("Single value for border-image", | 39 testImageSetRule("Single value for border-image", |
91 "-webkit-border-image", | 40 "-webkit-border-image", |
92 "url('#a') 1x", 2, | 41 "url(#a) 1x"); |
93 ["a", "1"]); | |
94 | 42 |
95 testImageSetRule("Multiple values for border-image", | 43 testImageSetRule("Multiple values for border-image", |
96 "-webkit-border-image", | 44 "-webkit-border-image", |
97 "url('#a') 1x, url('#b') 2x", 4, | 45 "url(#a) 1x, url(#b) 2x"); |
98 ["a", "1", "b", "2"]); | |
99 | 46 |
100 testImageSetRule("Single value for -webkit-mask-box-image-source", | 47 testImageSetRule("Single value for -webkit-mask-box-image-source", |
101 "-webkit-mask-box-image-source", | 48 "-webkit-mask-box-image-source", |
102 "url('#a') 1x", 2, | 49 "url(#a) 1x"); |
103 ["a", "1"]); | |
104 | 50 |
105 testImageSetRule("Multiple values for -webkit-mask-box-image-source", | 51 testImageSetRule("Multiple values for -webkit-mask-box-image-source", |
106 "-webkit-mask-box-image-source", | 52 "-webkit-mask-box-image-source", |
107 "url('#a') 1x, url('#b') 2x", 4, | 53 "url(#a) 1x, url(#b) 2x"); |
108 ["a", "1", "b", "2"]); | |
109 | 54 |
110 successfullyParsed = true; | 55 successfullyParsed = true; |
OLD | NEW |