Clean up color-filter tests.
[WebKit-https.git] / LayoutTests / css3 / color-filters / color-filter-parsing.html
1 <script src="../../resources/testharness.js"></script>
2 <script src="../../resources/testharnessreport.js"></script>
3 <div id="test"></div>
4
5 <script>
6
7 var testDiv = document.querySelector('#test');
8
9 function testColorFilterParsing(value, expected, name)
10 {
11     test(() => {
12         testDiv.style.colorFilter = '';
13         testDiv.style.colorFilter = value;
14         var computedStyle = getComputedStyle(testDiv).colorFilter;
15         assert_equals(computedStyle, expected);
16     }, name);
17 }
18
19 testColorFilterParsing("none", "none", "Parse none");
20 testColorFilterParsing("auto", "none", "Parse auto");
21 testColorFilterParsing("garbage", "none", "Parsing garbage value returns none");
22 testColorFilterParsing("garbage()", "none", "Parsing garbage function returns none");
23
24 // Argument-free funtions.
25 testColorFilterParsing("brightness()", "brightness(1)", "Parse brightness()");
26 testColorFilterParsing("contrast()", "contrast(1)", "Parse contrast()");
27 testColorFilterParsing("grayscale()", "grayscale(1)", "Parse grayscale()");
28 testColorFilterParsing("hue-rotate()", "hue-rotate(0deg)", "Parse hue-rotate()");
29 testColorFilterParsing("invert()", "invert(1)", "Parse invert");
30 testColorFilterParsing("opacity()", "opacity(1)", "Parse opacity()");
31 testColorFilterParsing("saturate()", "saturate(1)", "Parse saturate()");
32 testColorFilterParsing("sepia()", "sepia(1)", "Parse sepia()");
33
34 // Functions not allowed.
35 testColorFilterParsing("drop-shadow(110px 110px 0 blue)", "none", "drop-shadow() is not allowed in color-filter");
36 testColorFilterParsing("blur(10px)", "none", "blur() is not allowed in color-filter");
37
38 // Argument canonicalization.
39 testColorFilterParsing("grayscale(30%)", "grayscale(0.3)", "Canonicalize grayscale() argument");
40 testColorFilterParsing("hue-rotate(1.2rad)", "hue-rotate(68.75493541569878deg)", "Canonicalize hue-rotate() argument");
41
42 // Negative values.
43 testColorFilterParsing("brightness(-0.4)", "none", "Negative value for brightness() is invalid");
44 testColorFilterParsing("contrast(-0.6)", "none", "Negative value for contrast() is invalid");
45 testColorFilterParsing("grayscale(-0.)", "none", "Negative value for grayscale() is invalid");
46 testColorFilterParsing("hue-rotate(-20deg)", "hue-rotate(-20deg)", "Negative value allowed for hue-rotate()");
47 testColorFilterParsing("invert(-0.6)", "none", "Negative value for invert() is invalid");
48 testColorFilterParsing("opacity(-0.5)", "none", "Negative value for opacity() is invalid");
49 testColorFilterParsing("saturate(-0.2)", "none", "Negative value for saturate() is invalid");
50 testColorFilterParsing("sepia(-0.5)", "none", "Negative value for sepia() is invalid");
51
52 // Values > 1 or 100%
53 testColorFilterParsing("brightness(2.4)", "brightness(2.4)", "brightness(): values of amount over 100% are allowed, providing brighter results");
54 testColorFilterParsing("contrast(3.6)", "contrast(3.6)", "contrast(): values of amount over 100% are allowed, providing results with more contrast");
55 testColorFilterParsing("grayscale(120%)", "grayscale(1)", "Values of amount over 100% are allowed but UAs must clamp the values to 1");
56 testColorFilterParsing("hue-rotate(740deg)", "hue-rotate(740deg)", "hue-rotate(): implementations must not normalize this value in order to allow animations beyond 360deg");
57 testColorFilterParsing("invert(2.3)", "invert(1)", "invert(): values of amount over 100% are allowed but UAs must clamp the values to 1");
58 testColorFilterParsing("opacity(12.5)", "opacity(1)", "opacity(): values of amount over 100% are allowed but UAs must clamp the values to 1");
59 testColorFilterParsing("saturate(200%)", "saturate(2)", "saturate(): values of amount over 100% are allowed, providing super-saturated results");
60 testColorFilterParsing("sepia(5.3)", "sepia(1)", "sepia(): values of amount over 100% are allowed but UAs must clamp the values to 1");
61
62 // Function lists.
63 testColorFilterParsing("grayscale(50%) hue-rotate(45deg) opacity(0.5)", "grayscale(0.5) hue-rotate(45deg) opacity(0.5)", "Parse filter list");
64 testColorFilterParsing("grayscale(50%) blur(10px) opacity(0.5)", "none", "Filter list with blur is invalid");
65
66 </script>