Regression(r188105): Seems to have caused crashes during PLT on some iPads
[WebKit-https.git] / LayoutTests / fast / css / font-face-multiple-ranges-for-unicode-range.html
1 <!doctype html>
2 <html>
3 <head>
4 <title>Test for Bug 41509 - Ranges for @font-face unicode-range must be separated by commas</title>
5 <style>
6 .test {
7     border: solid 1px;
8 }
9
10 /* Test 0: Comma-separated list, which is valid. */
11 @font-face {
12     font-family:myfont_0;
13     src: local('Times');
14 }
15 @font-face {
16     font-family:myfont_0;
17     src: local('Courier');
18     unicode-range: u+69, u+6a; /* 'i' and 'j' */
19 }
20
21 /* Test 1: Comma-separated list with three elements, which is valid. */
22 @font-face {
23     font-family:myfont_1;
24     src: local('Times');
25 }
26 @font-face {
27     font-family:myfont_1;
28     src: local('Courier');
29     unicode-range: u+69 , u+6a ,u+6c; /* 'i', 'j', and 'l' */
30 }
31
32 /* Test 2: Comma-separated list with two consecutive commas, which is invalid. */
33 @font-face {
34     font-family:myfont_2;
35     src: local('Times');
36 }
37 @font-face {
38     font-family:myfont_2;
39     src: local('Courier');
40     unicode-range: u+69, , u+6a; /* 'i' and 'j' */
41 }
42
43 /* Test 3: Comma-separated list with a trailing comma, which is invalid. */
44 @font-face {
45     font-family:myfont_3;
46     src: local('Times');
47 }
48 @font-face {
49     font-family:myfont_3;
50     src: local('Courier');
51     unicode-range: u+69, u+6a,; /* 'i' and 'j' */
52 }
53
54 /* Test 4: Comma-separated list with a leading comma, which is invalid. */
55 @font-face {
56     font-family:myfont_4;
57     src: local('Times');
58 }
59 @font-face {
60     font-family:myfont_4;
61     src: local('Courier');
62     unicode-range: , u+69, u+6a; /* 'i' and 'j' */
63 }
64
65 /* Test 5: Space-separated list, which is invalid. */
66 @font-face {
67     font-family:myfont_5;
68     src: local('Times');
69 }
70 @font-face {
71     font-family:myfont_5;
72     src: local('Courier');
73     unicode-range: u+69 u+6a ; /* 'i' and 'j' */
74 }
75
76 /* Test 6: Slash-separated list, which is invalid. */
77 @font-face {
78     font-family:myfont_6;
79     src: local('Times');
80 }
81 @font-face {
82     font-family:myfont_6;
83     src: local('Courier');
84     unicode-range: u+69/u+6a; /* 'i' and 'j' */
85 }
86
87 </style>
88 <script src="../../resources/js-test-pre.js"></script>
89 </head>
90 <body>
91 <div id="description"></div>
92 <div id="tests"></div>
93
94 <div id="console"></div>
95 <script>
96 description("unicode-range can have comma-separated multiple ranges. For each of the following pairs, the upper and the lower lines should have the same length on screen.");
97
98 var testsElement = document.getElementById("tests");
99 var testStrings = [
100     "iiiiiiiiii",
101     "jjjjjjjjjj",
102     "kkkkkkkkkk",
103     "llllllllll"
104 ];
105 var expectedResults = [
106     // Effective font family for "i", "j", "k", and "l"
107     ["Courier", "Courier", "Times", "Times"],
108     ["Courier", "Courier", "Times", "Courier"],
109     ["Courier", "Courier", "Courier", "Courier"],
110     ["Courier", "Courier", "Courier", "Courier"],
111     ["Courier", "Courier", "Courier", "Courier"],
112     ["Courier", "Courier", "Courier", "Courier"],
113     ["Courier", "Courier", "Courier", "Courier"]
114 ];
115
116 function createAndAppendSpan(id, subId, fontFamily)
117 {
118     var span = document.createElement("span");
119     span.id = id;
120     span.className = "test";
121     span.style.fontFamily = fontFamily;
122     span.innerHTML = testStrings[subId];
123     testsElement.appendChild(span);
124     testsElement.appendChild(document.createTextNode(" " + id));
125     testsElement.appendChild(document.createElement("br"));
126 }
127
128 for (var mainTestId = 0; mainTestId < expectedResults.length; mainTestId++) {
129     for (var subTestId = 0; subTestId < testStrings.length; subTestId++) {
130         var testId = "test_" + mainTestId + "_" + subTestId;
131         var testFontFamily = "myfont_" + mainTestId;
132         createAndAppendSpan(testId, subTestId, testFontFamily);
133
134         var refId = "ref_" + mainTestId + "_" + subTestId;
135         var refFontFamily = expectedResults[mainTestId][subTestId];
136         createAndAppendSpan(refId, subTestId, refFontFamily);
137
138         shouldBe("document.getElementById('" + testId + "').offsetWidth", "document.getElementById('" + refId + "').offsetWidth");
139     }
140     testsElement.appendChild(document.createElement("br"));
141 }
142 </script>
143 <script src="../../resources/js-test-post.js"></script>
144 </body>
145 </html>
146