Index: LayoutTests/svg/css/parse-length.html |
diff --git a/LayoutTests/svg/css/parse-length.html b/LayoutTests/svg/css/parse-length.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9ddcb96908f76ea2994fc64beb04f58732f6df40 |
--- /dev/null |
+++ b/LayoutTests/svg/css/parse-length.html |
@@ -0,0 +1,87 @@ |
+<!DOCTYPE html> |
+<html> |
+<style> |
+* { font-size: 16px; } |
+svg, rect { font-family: 'Ahem'; } |
+div { font-size: 8px; } |
+</style> |
+<html> |
+<svg id="svg" width="0" height="0"></svg> |
+<script src="../../resources/js-test.js"></script> |
+<script> |
+description("Test that 'length' presentation attribute values are parsed with CSS presentation rules."); |
+ |
+function computedStyle(property, value) { |
+ var rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect'); |
+ document.getElementById('svg').appendChild(rect); |
+ rect.setAttribute(property, value); |
+ var computedValue = getComputedStyle(rect).getPropertyValue(property); |
+ document.getElementById('svg').removeChild(rect); |
+ return computedValue; |
+} |
+ |
+function testComputed(property, value, expected) { |
+ shouldBeEqualToString('computedStyle("' + property + '", "' + value + '")', expected); |
+} |
+ |
+function negativeTest(property, value) { |
+ testComputed(property, value, "auto"); |
+} |
+ |
+function negativeTestZero(property, value) { |
+ testComputed(property, value, "0px"); |
+} |
+ |
+// Test 'width'. |
+//testComputed("width", "auto", "auto"); |
+//testComputed("width", " 100", "100px"); |
+//testComputed("width", "100 ", "100px"); |
+//testComputed("width", "100px", "100px"); |
+//testComputed("width", "1em", "16px"); |
+//testComputed("width", "1ex", "12.8000001907349px"); |
+//testComputed("width", "20%", "20%"); |
+// FIXME: Vieport units not implemented for SVG at the moment. |
+// testComputed("width", "1vh", "7.869999885559082px"); |
+// testComputed("width", "1vw", "14.029999732971191px"); |
+ |
+// Test 'x'. |
+testComputed("x", " 100", "100px"); |
+testComputed("x", "100 ", "100px"); |
+testComputed("x", "100px", "100px"); |
+testComputed("x", "1em", "16px"); |
+// testComputed("x", "1ex", "12.8000001907349px"); // enable this again once http://crbug.com/441840 is fixed |
+testComputed("x", "20%", "20%"); |
+testComputed("x", "-200px", "-200px"); |
+ |
+// Test 'y'. |
+testComputed("y", " 100", "100px"); |
+testComputed("y", "100 ", "100px"); |
+testComputed("y", "100px", "100px"); |
+testComputed("y", "1em", "16px"); |
+// testComputed("y", "1ex", "12.8000001907349px"); // enable this again once http://crbug.com/441840 is fixed |
+testComputed("y", "20%", "20%"); |
+testComputed("y", "-200px", "-200px"); |
+ |
+// Negative tests for 'width'. |
+//negativeTest("width", "100 px"); |
+//negativeTest("width", "100px;"); |
+//negativeTest("width", "100px !important"); |
+//negativeTest("width", "{ 100px }"); |
+//negativeTest("width", "-100px"); |
+ |
+// Negative tests for 'x'. |
+negativeTestZero("x", "auto", "auto"); |
+negativeTestZero("x", "100 px"); |
+negativeTestZero("x", "100px;"); |
+negativeTestZero("x", "100px !important"); |
+negativeTestZero("x", "{ 100px }"); |
+ |
+// Negative tests for 'y'. |
+negativeTestZero("y", "auto"); |
+negativeTestZero("y", "100 px"); |
+negativeTestZero("y", "100px;"); |
+negativeTestZero("y", "100px !important"); |
+negativeTestZero("y", "{ 100px }"); |
+</script> |
+</body> |
+</html> |