LayoutTests:
[WebKit-https.git] / LayoutTests / svg / dom / preserve-aspect-ratio-parser.html
1 <html>
2 <head>
3 <link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
4 <script src="../../fast/js/resources/js-test-pre.js"></script>
5 </head>
6 <body>
7 <p id="description"></p>
8 <div id="console"></div>
9 <script>
10
11 description("This tests the parser for preserve aspect ratio attribute values.");
12
13 var imageElement = document.createElementNS("http://www.w3.org/2000/svg", "image");
14
15 function parsePreserveAspectRatio(string, alignValue, meetOrSliceValue)
16 {
17     imageElement.setAttributeNS(null, "preserveAspectRatio", string);
18     debug("Test string: '" + string + "'");
19     shouldBe("imageElement.preserveAspectRatio.baseVal.align", "" + alignValue);
20     shouldBe("imageElement.preserveAspectRatio.baseVal.meetOrSlice", "" + meetOrSliceValue);
21     debug("");
22 }
23
24 parsePreserveAspectRatio("none", 1, 1);
25
26 parsePreserveAspectRatio("xMinYMin", 2, 1);
27 parsePreserveAspectRatio("xMidYMin", 3, 1);
28 parsePreserveAspectRatio("xMaxYMin", 4, 1);
29 parsePreserveAspectRatio("xMinYMid", 5, 1);
30 parsePreserveAspectRatio("xMidYMid", 6, 1);
31 parsePreserveAspectRatio("xMaxYMid", 7, 1);
32 parsePreserveAspectRatio("xMinYMax", 8, 1);
33 parsePreserveAspectRatio("xMidYMax", 9, 1);
34 parsePreserveAspectRatio("xMaxYMax", 10, 1);
35
36 parsePreserveAspectRatio("xMinYMin meet", 2, 1);
37 parsePreserveAspectRatio("xMidYMin meet", 3, 1);
38 parsePreserveAspectRatio("xMaxYMin meet", 4, 1);
39 parsePreserveAspectRatio("xMinYMid meet", 5, 1);
40 parsePreserveAspectRatio("xMidYMid meet", 6, 1);
41 parsePreserveAspectRatio("xMaxYMid meet", 7, 1);
42 parsePreserveAspectRatio("xMinYMax meet", 8, 1);
43 parsePreserveAspectRatio("xMidYMax meet", 9, 1);
44 parsePreserveAspectRatio("xMaxYMax meet", 10, 1);
45
46 parsePreserveAspectRatio("xMinYMin slice", 2, 2);
47 parsePreserveAspectRatio("xMidYMin slice", 3, 2);
48 parsePreserveAspectRatio("xMaxYMin slice", 4, 2);
49 parsePreserveAspectRatio("xMinYMid slice", 5, 2);
50 parsePreserveAspectRatio("xMidYMid slice", 6, 2);
51 parsePreserveAspectRatio("xMaxYMid slice", 7, 2);
52 parsePreserveAspectRatio("xMinYMax slice", 8, 2);
53 parsePreserveAspectRatio("xMidYMax slice", 9, 2);
54 parsePreserveAspectRatio("xMaxYMax slice", 10, 2);
55
56 parsePreserveAspectRatio("defer xMinYMin", 2, 1);
57 parsePreserveAspectRatio("defer xMidYMin", 3, 1);
58 parsePreserveAspectRatio("defer xMaxYMin", 4, 1);
59 parsePreserveAspectRatio("defer xMinYMid", 5, 1);
60 parsePreserveAspectRatio("defer xMidYMid", 6, 1);
61 parsePreserveAspectRatio("defer xMaxYMid", 7, 1);
62 parsePreserveAspectRatio("defer xMinYMax", 8, 1);
63 parsePreserveAspectRatio("defer xMidYMax", 9, 1);
64 parsePreserveAspectRatio("defer xMaxYMax", 10, 1);
65
66 parsePreserveAspectRatio("defer xMinYMin meet", 2, 1);
67 parsePreserveAspectRatio("defer xMidYMin meet", 3, 1);
68 parsePreserveAspectRatio("defer xMaxYMin meet", 4, 1);
69 parsePreserveAspectRatio("defer xMinYMid meet", 5, 1);
70 parsePreserveAspectRatio("defer xMidYMid meet", 6, 1);
71 parsePreserveAspectRatio("defer xMaxYMid meet", 7, 1);
72 parsePreserveAspectRatio("defer xMinYMax meet", 8, 1);
73 parsePreserveAspectRatio("defer xMidYMax meet", 9, 1);
74 parsePreserveAspectRatio("defer xMaxYMax meet", 10, 1);
75
76 parsePreserveAspectRatio("defer xMinYMin slice", 2, 2);
77 parsePreserveAspectRatio("defer xMidYMin slice", 3, 2);
78 parsePreserveAspectRatio("defer xMaxYMin slice", 4, 2);
79 parsePreserveAspectRatio("defer xMinYMid slice", 5, 2);
80 parsePreserveAspectRatio("defer xMidYMid slice", 6, 2);
81 parsePreserveAspectRatio("defer xMaxYMid slice", 7, 2);
82 parsePreserveAspectRatio("defer xMinYMax slice", 8, 2);
83 parsePreserveAspectRatio("defer xMidYMax slice", 9, 2);
84 parsePreserveAspectRatio("defer xMaxYMax slice", 10, 2);
85
86 debug('Tests for some whitespace cases.');
87 debug('');
88
89 parsePreserveAspectRatio(" xMinYMin", 2, 1);
90 parsePreserveAspectRatio("xMinYMin ", 2, 1);
91 parsePreserveAspectRatio(" xMinYMin ", 2, 1);
92 parsePreserveAspectRatio("         xMinYMin        ", 2, 1);
93 parsePreserveAspectRatio("xMinYMin" + String.fromCharCode(9), 2, 1);
94 parsePreserveAspectRatio("xMinYMin" + String.fromCharCode(10), 2, 1);
95 parsePreserveAspectRatio("xMinYMin" + String.fromCharCode(13), 2, 1);
96
97 parsePreserveAspectRatio("xMinYMinslice", 2, 2);
98 parsePreserveAspectRatio("xMinYMin slice", 2, 2);
99 parsePreserveAspectRatio("xMinYMinslice ", 2, 2);
100 parsePreserveAspectRatio("xMinYMin        slice        ", 2, 2);
101 parsePreserveAspectRatio(" xMinYMinslice", 2, 2);
102 parsePreserveAspectRatio(" xMinYMin slice", 2, 2);
103 parsePreserveAspectRatio(" xMinYMinslice ", 2, 2);
104 parsePreserveAspectRatio("        xMinYMin        slice        ", 2, 2);
105
106 debug('Tests for bug where "slice" parsing was based on the old value rather than the parsed value.');
107 debug('');
108
109 parsePreserveAspectRatio("none", 1, 1);
110 parsePreserveAspectRatio("xMinYMin slice", 2, 2);
111
112 parsePreserveAspectRatio("xMinYMin", 2, 1);
113 parsePreserveAspectRatio("none slice", 1, 1);
114
115 parsePreserveAspectRatio("xMinYMin", 2, 1);
116 parsePreserveAspectRatio("slice", 1, 1);
117
118 debug('Strings that fail to parse, and hence parse as "none".');
119 debug('');
120
121 parsePreserveAspectRatio("", 1, 1);
122 parsePreserveAspectRatio("defer", 1, 1);
123 parsePreserveAspectRatio("meet", 1, 1);
124 parsePreserveAspectRatio("slice", 1, 1);
125 parsePreserveAspectRatio("xminymin", 1, 1);
126 parsePreserveAspectRatio("refer xMinYMin slice", 1, 1);
127 parsePreserveAspectRatio("xMinYMin defer", 1, 1);
128 parsePreserveAspectRatio("slice xMinYMin", 1, 1);
129 parsePreserveAspectRatio("xMinYMin" + String.fromCharCode(0xa0), 1, 1);
130
131 successfullyParsed = true;
132
133 </script>
134 <script src="../../fast/js/resources/js-test-post.js"></script>
135 </body>
136 </html>