Parse drop-shadow() filter syntax https://bugs.webkit.org/show_bug.cgi?id=69108
[WebKit-https.git] / LayoutTests / css3 / filters / script-tests / filter-property-parsing-invalid.js
1 description("Test the parsing of the -webkit-filter property.");
2
3 // These have to be global for the test helpers to see them.
4 var stylesheet, cssRule, declaration;
5
6 function testInvalidFilterRule(description, rule)
7 {
8     debug("");
9     debug(description + " : " + rule);
10
11     stylesheet = document.styleSheets.item(0);
12     stylesheet.insertRule("body { -webkit-filter: " + rule + "; }", 0);
13     cssRule = stylesheet.cssRules.item(0);
14   
15     shouldBe("cssRule.type", "1");
16
17     declaration = cssRule.style;
18     shouldBe("declaration.length", "0");
19     shouldBe("declaration.getPropertyValue('-webkit-filter')", "null");
20 }
21
22 testInvalidFilterRule("Too many parameters", "url(#a #b)");
23
24 testInvalidFilterRule("Length instead of number", "grayscale(10px)");
25 testInvalidFilterRule("Too many parameters", "grayscale(0.5 0.5)");
26 testInvalidFilterRule("Too many parameters and commas", "grayscale(0.5, 0.5)");
27 testInvalidFilterRule("Trailing comma", "grayscale(0.5,)");
28 testInvalidFilterRule("Negative parameter", "grayscale(-0.5)");
29 testInvalidFilterRule("Parameter out of bounds", "grayscale(1.5)");
30
31 testInvalidFilterRule("Length instead of number", "sepia(1%)");
32 testInvalidFilterRule("Too many parameters", "sepia(0.5 0.5 3.0)");
33 testInvalidFilterRule("Too many parameters and commas", "sepia(0.1, 0.1)");
34 testInvalidFilterRule("Trailing comma", "sepia(0.5,)");
35 testInvalidFilterRule("Negative parameter", "sepia(-0.01)");
36 testInvalidFilterRule("Parameter out of bounds", "sepia(10000)");
37
38 testInvalidFilterRule("Length instead of number", "saturate(10px)");
39 testInvalidFilterRule("Too many parameters", "saturate(0.5 0.5)");
40 testInvalidFilterRule("Too many parameters and commas", "saturate(0.5, 0.5)");
41 testInvalidFilterRule("Trailing comma", "saturate(0.5,)");
42 testInvalidFilterRule("Negative parameter", "saturate(-0.5)");
43 testInvalidFilterRule("Parameter out of bounds", "saturate(1.5)");
44
45 testInvalidFilterRule("Bare number", "hue-rotate(10)");
46 testInvalidFilterRule("Length", "hue-rotate(10px)");
47 testInvalidFilterRule("Too many parameters", "hue-rotate(10deg 4)");
48 testInvalidFilterRule("Too many parameters and commas", "hue-rotate(10deg, 5deg)");
49 testInvalidFilterRule("Trailing comma", "hue-rotate(10deg,)");
50
51 testInvalidFilterRule("Length instead of number", "invert(10px)");
52 testInvalidFilterRule("Too many parameters", "invert(0.5 0.5)");
53 testInvalidFilterRule("Too many parameters and commas", "invert(0.5, 0.5)");
54 testInvalidFilterRule("Trailing comma", "invert(0.5,)");
55 testInvalidFilterRule("Negative parameter", "invert(-0.5)");
56 testInvalidFilterRule("Parameter out of bounds", "invert(1.5)");
57
58 testInvalidFilterRule("Length instead of number", "opacity(10px)");
59 testInvalidFilterRule("Too many parameters", "opacity(0.5 0.5)");
60 testInvalidFilterRule("Too many parameters and commas", "opacity(0.5, 0.5)");
61 testInvalidFilterRule("Trailing comma", "opacity(0.5,)");
62 testInvalidFilterRule("Negative parameter", "opacity(-0.5)");
63 testInvalidFilterRule("Parameter out of bounds", "opacity(1.5)");
64
65 testInvalidFilterRule("Length instead of number", "gamma(10px 10 10)");
66 testInvalidFilterRule("Length instead of number", "gamma(10 10px 10)");
67 testInvalidFilterRule("Length instead of number", "gamma(10 10 10px)");
68 testInvalidFilterRule("Negative number", "gamma(-0.1)");
69 testInvalidFilterRule("Negative number", "gamma(1.0 -0.1)");
70 testInvalidFilterRule("Too many parameters", "gamma(1.0 1.0 1.0 1.0)");
71 testInvalidFilterRule("Commas", "gamma(1.0, 1.0, 1.0)");
72 testInvalidFilterRule("Trailing comma", "gamma(1.0, 1.0,)");
73
74 testInvalidFilterRule("Bare number", "blur(1)");
75 testInvalidFilterRule("Bare number", "blur(1px 1)");
76 testInvalidFilterRule("Negative number", "blur(-1px 1px)");
77 testInvalidFilterRule("Negative number", "blur(1px -1px)");
78 testInvalidFilterRule("Too many parameters", "blur(1px 1px 1px)");
79 testInvalidFilterRule("Too many parameters and commas", "blur(1em, 1em, 2em)");
80 testInvalidFilterRule("Commas", "blur(10px, 10px)");
81 testInvalidFilterRule("Trailing comma", "blur(1em,)");
82
83 testInvalidFilterRule("Missing length", "sharpen(1 1 1)");
84 testInvalidFilterRule("Wrong length type", "sharpen(1 1deg 1)");
85 testInvalidFilterRule("Too many parameters", "sharpen(1 1px 1 1)");
86 testInvalidFilterRule("Too many parameters and commas", "sharpen(1, 1px, 1, 1)");
87 testInvalidFilterRule("Commas", "sharpen(1, 10px, 1)");
88 testInvalidFilterRule("Trailing comma", "sharpen(1, 10px,)");
89
90 testInvalidFilterRule("No values", "drop-shadow()");
91 testInvalidFilterRule("Missing lengths", "drop-shadow(red)");
92 testInvalidFilterRule("Not enough lengths", "drop-shadow(red 1px)");
93 testInvalidFilterRule("Missing units", "drop-shadow(red 1 2 3)");
94 testInvalidFilterRule("Inset", "drop-shadow(red 1px 2px 3px inset)");
95 testInvalidFilterRule("Too many parameters", "drop-shadow(red 1px 2px 3px 4px)");
96 testInvalidFilterRule("Commas", "drop-shadow(red, 1px, 2px, 3px)");
97
98 successfullyParsed = true;