Make outside-shape the default value for shape-inside
[WebKit-https.git] / LayoutTests / fast / exclusions / script-tests / parsing-wrap-shape-inside.js
1 description('Testing the parsing of the -webkit-shape-inside property.');
2
3 if (window.internals)
4     window.internals.settings.setCSSExclusionsEnabled(true);
5
6 function testCSSText(declaration, expected)
7 {
8     var element = document.createElement("div");
9     element.style.cssText = "-webkit-shape-inside: " + declaration;
10     return element.style.webkitShapeInside;
11 }
12
13 function testComputedStyle(value, expected) {
14     var element = document.createElement("div");
15     document.body.appendChild(element);
16     element.style.setProperty("-webkit-shape-inside", value);
17
18     var computedStyle = getComputedStyle(element);
19     var actualValue = computedStyle.getPropertyValue("-webkit-shape-inside");
20     document.body.removeChild(element);
21
22     return actualValue;
23 }
24
25 function testNotInherited(parentValue, childValue) {
26    var parentElement = document.createElement("div");
27    document.body.appendChild(parentElement);
28    parentElement.style.setProperty("-webkit-shape-inside", parentValue);
29
30    var childElement = document.createElement("div");
31    parentElement.appendChild(childElement);
32    childElement.style.setProperty("-webkit-shape-inside", childValue);
33
34    var parentComputedStyle = getComputedStyle(parentElement);
35    var parentActual = parentComputedStyle.getPropertyValue('-webkit-shape-inside')
36
37    var childComputedStyle = getComputedStyle(childElement);
38    var childActual = childComputedStyle.getPropertyValue('-webkit-shape-inside')
39
40    parentElement.removeChild(childElement);
41    document.body.removeChild(parentElement);
42
43    return "parent: " + parentActual + ", child: " + childActual;
44 }
45
46 function test(value, expected) {
47     var unevaledString = '"' + value.replace(/\\/g, "\\\\").replace(/"/g, "\"").replace(/\n/g, "\\n").replace(/\r/g, "\\r") + '"';
48     shouldBeEqualToString('testCSSText(' + unevaledString + ')', expected);
49     shouldBeEqualToString('testComputedStyle(' + unevaledString + ')', expected);
50 }
51
52 function negative_test(value) {
53     var unevaledString = '"' + value.replace(/\\/g, "\\\\").replace(/"/g, "\"").replace(/\n/g, "\\n").replace(/\r/g, "\\r") + '"';
54     shouldBeEqualToString('testCSSText(' + unevaledString + ')', '');
55     shouldBeEqualToString('testComputedStyle(' + unevaledString + ')', 'outside-shape');
56 }
57
58 // positive tests
59
60 test("auto", "auto");
61 test("outside-shape", "outside-shape");
62 test("rectangle(10px, 20px, 30px, 40px)", "rectangle(10px, 20px, 30px, 40px)");
63 test("rectangle(10px, 20px, 30px, 40px, 5px)", "rectangle(10px, 20px, 30px, 40px, 5px)");
64 test("rectangle(10px, 20px, 30px, 40px, 5px, 10px)", "rectangle(10px, 20px, 30px, 40px, 5px, 10px)");
65
66 test("circle(10px, 20px, 30px)", "circle(10px, 20px, 30px)");
67
68 test("ellipse(10px, 20px, 30px, 40px)", "ellipse(10px, 20px, 30px, 40px)");
69
70 test("polygon(10px 20px, 30px 40px, 40px 50px)", "polygon(nonzero, 10px 20px, 30px 40px, 40px 50px)");
71 test("polygon(evenodd, 10px 20px, 30px 40px, 40px 50px)", "polygon(evenodd, 10px 20px, 30px 40px, 40px 50px)");
72 test("polygon(nonzero, 10px 20px, 30px 40px, 40px 50px)", "polygon(nonzero, 10px 20px, 30px 40px, 40px 50px)");
73
74 shouldBeEqualToString('testNotInherited("auto", "rectangle(10px, 20px, 30px, 40px)")', "parent: auto, child: rectangle(10px, 20px, 30px, 40px)");
75 shouldBeEqualToString('testNotInherited("outside-shape", "rectangle(10px, 20px, 30px, 40px)")', "parent: outside-shape, child: rectangle(10px, 20px, 30px, 40px)");
76 shouldBeEqualToString('testNotInherited("rectangle(10px, 20px, 30px, 40px)", "initial")', "parent: rectangle(10px, 20px, 30px, 40px), child: outside-shape");
77 shouldBeEqualToString('testNotInherited("rectangle(10px, 20px, 30px, 40px)", "")', "parent: rectangle(10px, 20px, 30px, 40px), child: outside-shape");
78 shouldBeEqualToString('testNotInherited("rectangle(10px, 20px, 30px, 40px)", "inherit")', "parent: rectangle(10px, 20px, 30px, 40px), child: rectangle(10px, 20px, 30px, 40px)");
79 shouldBeEqualToString('testNotInherited("", "inherit")', "parent: outside-shape, child: outside-shape");
80 shouldBeEqualToString('testNotInherited("auto", "inherit")', "parent: auto, child: auto");
81
82 // negative tests
83
84 negative_test("calc()");
85 negative_test("none");
86
87 negative_test("rectangle()");
88 negative_test("rectangle(10px)");
89 negative_test("rectangle(10px, 10px)");
90 negative_test("rectangle(10px, 20px, 30px)");
91 negative_test("rectangle(10px 20px 30px 40px)");
92 negative_test("rectangle(10px, 20px, 30px, 40px, 50px, 60px, 70px)");
93
94 negative_test("circle()");
95 negative_test("circle(10px)");
96 negative_test("circle(10px, 20px)");
97 negative_test("circle(10px 20px 30px)");
98 negative_test("circle(10px, 20px, 30px, 40px)");
99
100 negative_test("ellipse()");
101 negative_test("ellipse(10px)");
102 negative_test("ellipse(10px, 20px)");
103 negative_test("ellipse(10px, 20px, 30px)");
104 negative_test("ellipse(10px 20px 30px 40px)");
105
106 negative_test("polygon()");
107 negative_test("polygon(evenodd 10px 20px, 30px 40px, 40px 50px)");
108 negative_test("polygon(nonzero 10px 20px, 30px 40px, 40px 50px)");
109 negative_test("polygon(nonzero)");
110 negative_test("polygon(evenodd)");
111 negative_test("polygon(10px)");
112 negative_test("polygon(nonzero,10px)");
113 negative_test("polygon(evenodd,12px)");
114 negative_test("polygon(10px, 20px, 30px, 40px, 40px, 50px)");