-webkit-text-underline-position should not be inherited
[WebKit-https.git] / LayoutTests / fast / css3-text / css3-text-decoration / getComputedStyle / script-tests / getComputedStyle-text-underline-position.js
1 function testElementStyle(propertyJS, propertyCSS, type, value)
2 {
3     if (type != null) {
4         shouldBe("e.style." + propertyJS, "'" + value + "'");
5         shouldBe("e.style.getPropertyCSSValue('" + propertyCSS + "').toString()", "'" + type + "'");
6         shouldBe("e.style.getPropertyCSSValue('" + propertyCSS + "').cssText", "'" + value + "'");
7     } else
8         shouldBeNull("e.style.getPropertyCSSValue('" + propertyCSS + "')");
9 }
10
11 function testComputedStyle(propertyJS, propertyCSS, type, value)
12 {
13     computedStyle = window.getComputedStyle(e, null);
14     shouldBe("computedStyle." + propertyJS, "'" + value + "'");
15     shouldBe("computedStyle.getPropertyCSSValue('" + propertyCSS + "').toString()", "'" + type + "'");
16     shouldBe("computedStyle.getPropertyCSSValue('" + propertyCSS + "').cssText", "'" + value + "'");
17 }
18
19 description("Test to make sure -webkit-text-underline-position property returns values properly.")
20
21 // FIXME: This test tests property values 'auto', 'alphabetic' and 'under'. We don't fully match
22 // the specification as we don't support [ left | right ] and this is left for another implementation
23 // as the rendering will need to be added.
24
25 var testContainer = document.createElement("div");
26 testContainer.contentEditable = true;
27 document.body.appendChild(testContainer);
28
29 testContainer.innerHTML = '<div id="test">hello world</div>';
30
31 debug("Initial value:");
32 e = document.getElementById('test');
33 testElementStyle("webkitTextUnderlinePosition", "-webkit-text-underline-position", null, '');
34 testComputedStyle("webkitTextUnderlinePosition", "-webkit-text-underline-position", "[object CSSPrimitiveValue]", "auto");
35 debug('');
36
37 debug("Value '':");
38 e.style.webkitTextUnderlinePosition = '';
39 testElementStyle("webkitTextUnderlinePosition", "-webkit-text-underline-position", null, '');
40 testComputedStyle("webkitTextUnderlinePosition", "-webkit-text-underline-position", "[object CSSPrimitiveValue]", "auto");
41 debug('');
42
43 debug("Initial value (explicit):");
44 e.style.webkitTextUnderlinePosition = 'initial';
45 testElementStyle("webkitTextUnderlinePosition", "-webkit-text-underline-position", "[object CSSValue]", "initial");
46 testComputedStyle("webkitTextUnderlinePosition", "-webkit-text-underline-position", "[object CSSPrimitiveValue]", "auto");
47 debug('');
48
49 debug("Value 'auto':");
50 e.style.webkitTextUnderlinePosition = 'auto';
51 testElementStyle("webkitTextUnderlinePosition", "-webkit-text-underline-position", "[object CSSPrimitiveValue]", "auto");
52 testComputedStyle("webkitTextUnderlinePosition", "-webkit-text-underline-position", "[object CSSPrimitiveValue]", "auto");
53 debug('');
54
55 debug("Value 'alphabetic':");
56 e.style.webkitTextUnderlinePosition = 'alphabetic';
57 testElementStyle("webkitTextUnderlinePosition", "-webkit-text-underline-position", "[object CSSPrimitiveValue]", "alphabetic");
58 testComputedStyle("webkitTextUnderlinePosition", "-webkit-text-underline-position", "[object CSSPrimitiveValue]", "alphabetic");
59 debug('');
60
61 debug("Value 'under':");
62 e.style.webkitTextUnderlinePosition = 'under';
63 testElementStyle("webkitTextUnderlinePosition", "-webkit-text-underline-position", "[object CSSPrimitiveValue]", "under");
64 testComputedStyle("webkitTextUnderlinePosition", "-webkit-text-underline-position", "[object CSSPrimitiveValue]", "under");
65 debug('');
66
67 testContainer.innerHTML = '<div id="test-parent" style="-webkit-text-underline-position: under;">hello <span id="test-ancestor">world</span></div>';
68 debug("Ancestor does not inherit values from parent:");
69 e = document.getElementById('test-ancestor');
70 testElementStyle("webkitTextUnderlinePosition", "-webkit-text-underline-position", null, "");
71 testComputedStyle("webkitTextUnderlinePosition", "-webkit-text-underline-position", "[object CSSPrimitiveValue]", "auto");
72 debug('');
73
74 debug("Value 'auto alphabetic':");
75 e.style.webkitTextUnderlinePosition = 'auto alphabetic';
76 testElementStyle("webkitTextUnderlinePosition", "-webkit-text-underline-position", null, "");
77 debug('');
78
79 debug("Value 'auto under':");
80 e.style.webkitTextUnderlinePosition = 'auto under';
81 testElementStyle("webkitTextUnderlinePosition", "-webkit-text-underline-position", null, "");
82 debug('');
83
84 debug("Value 'under under':");
85 e.style.webkitTextUnderlinePosition = 'under under';
86 testElementStyle("webkitTextUnderlinePosition", "-webkit-text-underline-position", null, "");
87 debug('');
88
89 debug("Value 'under under under':");
90 e.style.webkitTextUnderlinePosition = 'auto alphabetic under';
91 testElementStyle("webkitTextUnderlinePosition", "-webkit-text-underline-position", null, "");
92 debug('');
93
94 document.body.removeChild(testContainer);