|
1 <!DOCTYPE html> |
|
2 <html> |
|
3 <head> |
|
4 <title>Word boundary text tests</title> |
|
5 <link rel="stylesheet" type="text/css" |
|
6 href="chrome://mochikit/content/tests/SimpleTest/test.css" /> |
|
7 |
|
8 <script type="application/javascript" |
|
9 src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> |
|
10 <script type="application/javascript" |
|
11 src="../common.js"></script> |
|
12 <script type="application/javascript" |
|
13 src="../text.js"></script> |
|
14 |
|
15 <script type="application/javascript"> |
|
16 function doTest() |
|
17 { |
|
18 // "hello" |
|
19 // __h__e__l__l__o__ |
|
20 // 0 1 2 3 4 5 |
|
21 var ids = [ "i1", "d1", "e1", "t1" ]; |
|
22 testTextBeforeOffset(ids, BOUNDARY_WORD_START, |
|
23 [ [ 0, 5, "", 0, 0 ] ]); |
|
24 testTextBeforeOffset(ids, BOUNDARY_WORD_END, |
|
25 [ [ 0, 5, "", 0, 0 ] ]); |
|
26 |
|
27 testTextAtOffset(ids, BOUNDARY_WORD_START, |
|
28 [ [ 0, 5, "hello", 0, 5 ] ]); |
|
29 testTextAtOffset(ids, BOUNDARY_WORD_END, |
|
30 [ [ 0, 5, "hello", 0, 5 ] ]); |
|
31 |
|
32 testTextAfterOffset(ids, BOUNDARY_WORD_START, |
|
33 [ [ 0, 5, "", 5, 5 ] ]); |
|
34 testTextAfterOffset(ids, BOUNDARY_WORD_END, |
|
35 [ [ 0, 5, "", 5, 5 ] ]); |
|
36 |
|
37 // "hello " |
|
38 // __h__e__l__l__o__ __ |
|
39 // 0 1 2 3 4 5 6 |
|
40 var ids = [ "i2", "d2", "e2", "t2" ]; |
|
41 testTextBeforeOffset(ids, BOUNDARY_WORD_START, |
|
42 [ [ 0, 6, "", 0, 0 ] ]); |
|
43 testTextBeforeOffset(ids, BOUNDARY_WORD_END, |
|
44 [ [ 0, 5, "", 0, 0 ], |
|
45 [ 6, 6, "hello", 0, 5, |
|
46 [ [6, "e2", kTodo, kOk, kTodo ] ] |
|
47 ] |
|
48 ]); |
|
49 |
|
50 testTextAtOffset(ids, BOUNDARY_WORD_START, |
|
51 [ [ 0, 6, "hello ", 0, 6 ] ]); |
|
52 testTextAtOffset(ids, BOUNDARY_WORD_END, |
|
53 [ [ 0, 4, "hello", 0, 5 ], |
|
54 [ 5, 6, " ", 5, 6, |
|
55 [ [ 5, "e2", kTodo, kTodo, kOk ], |
|
56 [ 6, "e2", kTodo, kTodo, kOk ] ] |
|
57 ] |
|
58 ]); |
|
59 |
|
60 testTextAfterOffset(ids, BOUNDARY_WORD_START, |
|
61 [ [ 0, 6, "", 6, 6 ] ]); |
|
62 testTextAfterOffset(ids, BOUNDARY_WORD_END, |
|
63 [ [ 0, 5, " ", 5, 6, |
|
64 [ [ 5, "e2", kTodo, kTodo, kOk ] ] |
|
65 ], |
|
66 [ 6, 6, "", 6, 6 ] |
|
67 ]); |
|
68 |
|
69 // "hello all" |
|
70 // __h__e__l__l__o__ __a__l__l__ |
|
71 // 0 1 2 3 4 5 6 7 8 9 |
|
72 ids = [ "i6", "d6", "e6", "t6" ]; |
|
73 testTextBeforeOffset(ids, BOUNDARY_WORD_START, |
|
74 [ [ 0, 5, "", 0, 0 ], |
|
75 [ 6, 9, "hello ", 0, 6 ]]); |
|
76 testTextBeforeOffset(ids, BOUNDARY_WORD_END, |
|
77 [ [ 0, 5, "", 0, 0 ], |
|
78 [ 6, 9, "hello", 0, 5 ] ]); |
|
79 |
|
80 testTextAtOffset(ids, BOUNDARY_WORD_START, |
|
81 [ [ 0, 5, "hello ", 0, 6 ], |
|
82 [ 6, 9, "all", 6, 9 ] ]); |
|
83 testTextAtOffset(ids, BOUNDARY_WORD_END, |
|
84 [ [ 0, 4, "hello", 0, 5 ], |
|
85 [ 5, 9, " all", 5, 9 ] ]); |
|
86 |
|
87 testTextAfterOffset(ids, BOUNDARY_WORD_START, |
|
88 [ [ 0, 5, "all", 6, 9 ], |
|
89 [ 6, 9, "", 9, 9 ] ]); |
|
90 testTextAfterOffset(ids, BOUNDARY_WORD_END, |
|
91 [ [ 0, 5, " all", 5, 9 ], |
|
92 [ 6, 9, "", 9, 9 ] ]); |
|
93 |
|
94 // "hello my friend" |
|
95 // __h__e__l__l__o__ __m__y__ __f__r__i__e__n__d__ |
|
96 // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
97 ids = [ "i7", "d7", "e7", "t7" ]; |
|
98 testTextBeforeOffset(ids, BOUNDARY_WORD_START, |
|
99 [ [ 0, 5, "", 0, 0 ], |
|
100 [ 6, 8, "hello ", 0, 6 ], |
|
101 [ 9, 15, "my ", 6, 9 ] ]); |
|
102 testTextBeforeOffset(ids, BOUNDARY_WORD_END, |
|
103 [ [ 0, 5, "", 0, 0 ], |
|
104 [ 6, 8, "hello", 0, 5 ], |
|
105 [ 9, 15, " my", 5, 8 ] ]); |
|
106 |
|
107 testTextAtOffset(ids, BOUNDARY_WORD_START, |
|
108 [ [ 0, 5, "hello ", 0, 6 ], |
|
109 [ 6, 8, "my ", 6, 9 ], |
|
110 [ 9, 15, "friend", 9, 15] ]); |
|
111 testTextAtOffset(ids, BOUNDARY_WORD_END, |
|
112 [ [ 0, 4, "hello", 0, 5 ], |
|
113 [ 5, 7, " my", 5, 8 ], |
|
114 [ 8, 15, " friend", 8, 15] ]); |
|
115 |
|
116 testTextAfterOffset(ids, BOUNDARY_WORD_START, |
|
117 [ [ 0, 5, "my ", 6, 9 ], |
|
118 [ 6, 8, "friend", 9, 15 ], |
|
119 [ 9, 15, "", 15, 15 ] ]); |
|
120 testTextAfterOffset(ids, BOUNDARY_WORD_END, |
|
121 [ [ 0, 5, " my", 5, 8 ], |
|
122 [ 6, 8, " friend", 8, 15 ], |
|
123 [ 9, 15, "", 15, 15 ] ]); |
|
124 |
|
125 // "Brave Sir Robin ran" |
|
126 // __B__r__a__v__e__ __S__i__r__ __ __R__o__b__i__n__ __ __ __r__a__n__ |
|
127 // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
128 ids = [ "i8", "d8", "e8", "t8" ]; |
|
129 testTextBeforeOffset(ids, BOUNDARY_WORD_START, |
|
130 [ [ 0, 5, "", 0, 0 ], |
|
131 [ 6, 10, "Brave ", 0, 6 ], |
|
132 [ 11, 18, "Sir ", 6, 11 ], |
|
133 [ 19, 22, "Robin ", 11, 19 ] ]); |
|
134 testTextBeforeOffset(ids, BOUNDARY_WORD_END, |
|
135 [ [ 0, 5, "", 0, 0 ], |
|
136 [ 6, 9, "Brave", 0, 5 ], |
|
137 [ 10, 16, " Sir", 5, 9 ], |
|
138 [ 17, 22, " Robin", 9, 16 ] ]); |
|
139 |
|
140 testTextAtOffset(ids, BOUNDARY_WORD_START, |
|
141 [ [ 0, 5, "Brave ", 0, 6 ], |
|
142 [ 6, 10, "Sir ", 6, 11 ], |
|
143 [ 11, 18, "Robin ", 11, 19 ], |
|
144 [ 19, 22, "ran", 19, 22 ] ]); |
|
145 testTextAtOffset(ids, BOUNDARY_WORD_END, |
|
146 [ [ 0, 4, "Brave", 0, 5 ], |
|
147 [ 5, 8, " Sir", 5, 9 ], |
|
148 [ 9, 15, " Robin", 9, 16 ], |
|
149 [ 16, 22, " ran", 16, 22 ] ]); |
|
150 |
|
151 testTextAfterOffset(ids, BOUNDARY_WORD_START, |
|
152 [ [ 0, 5, "Sir ", 6, 11 ], |
|
153 [ 6, 10, "Robin ", 11, 19 ], |
|
154 [ 11, 18, "ran", 19, 22 ], |
|
155 [ 19, 22, "", 22, 22 ] ]); |
|
156 testTextAfterOffset(ids, BOUNDARY_WORD_END, |
|
157 [ [ 0, 5, " Sir", 5, 9 ], |
|
158 [ 6, 9, " Robin", 9, 16 ], |
|
159 [ 10, 16, " ran", 16, 22 ], |
|
160 [ 17, 22, "", 22, 22 ] ]); |
|
161 |
|
162 // 'oneword |
|
163 // ' |
|
164 // 'two words |
|
165 // ' |
|
166 // __o__n__e__w__o__r__d__\n |
|
167 // 0 1 2 3 4 5 6 7 |
|
168 // __\n |
|
169 // 8 |
|
170 // __t__w__o__ __w__o__r__d__s__\n__ |
|
171 // 9 10 11 12 13 14 15 16 17 18 19 |
|
172 |
|
173 ids = ["ml_div1", "ml_divbr1", "ml_ediv1", "ml_edivbr1", "ml_t1"]; |
|
174 testTextBeforeOffset(ids, BOUNDARY_WORD_START, |
|
175 [ [ 0, 8, "", 0, 0 ], |
|
176 [ 9, 12, "oneword\n\n", 0, 9 ], |
|
177 [ 13, 19, "two ", 9, 13 ] ]); |
|
178 testTextBeforeOffset(ids, BOUNDARY_WORD_END, |
|
179 [ [ 0, 7, "", 0, 0 ], |
|
180 [ 8, 12, "oneword", 0, 7, |
|
181 [ [ 8, "ml_divbr1", kTodo, kOk, kTodo ], |
|
182 [ 8, "ml_edivbr1", kTodo, kOk, kTodo ], |
|
183 [ 9, "ml_divbr1", kTodo, kOk, kTodo ], |
|
184 [ 9, "ml_edivbr1", kTodo, kOk, kTodo ] ] ], |
|
185 [ 13, 18, "\n\ntwo", 7, 12 ], |
|
186 [ 19, 19, " words", 12, 18, |
|
187 [ [ 19, "ml_divbr1", kTodo, kTodo, kTodo, ], |
|
188 [ 19, "ml_edivbr1", kTodo, kTodo, kTodo, ] ] ] |
|
189 ] ); |
|
190 |
|
191 testTextAtOffset(ids, BOUNDARY_WORD_START, |
|
192 [ [ 0, 8, "oneword\n\n", 0, 9, |
|
193 [ [ 7, "ml_divbr1", kTodo, kTodo, kTodo ], |
|
194 [ 7, "ml_edivbr1", kTodo, kTodo, kTodo ], |
|
195 [ 8, "ml_divbr1", kTodo, kTodo, kTodo ], |
|
196 [ 8, "ml_edivbr1", kTodo, kTodo, kTodo ] ] ], |
|
197 [ 9, 12, "two ", 9, 13 ], |
|
198 [ 13, 19, "words\n", 13, 19 ] ]); |
|
199 testTextAtOffset(ids, BOUNDARY_WORD_END, |
|
200 [ [ 0, 6, "oneword", 0, 7 ], |
|
201 [ 7, 11, "\n\ntwo", 7, 12 ], |
|
202 [ 12, 17, " words", 12, 18 ], |
|
203 [ 18, 19, "\n", 18, 19, |
|
204 [ [ 18, "ml_divbr1", kTodo, kTodo, kOk ], |
|
205 [ 18, "ml_edivbr1", kTodo, kTodo, kOk ], |
|
206 [ 19, "ml_divbr1", kTodo, kTodo, kOk ], |
|
207 [ 19, "ml_edivbr1", kTodo, kTodo, kOk ] ] ] ]); |
|
208 |
|
209 testTextAfterOffset(ids, BOUNDARY_WORD_START, |
|
210 [ [ 0, 8, "two ", 9, 13, |
|
211 [ [ 7, "ml_divbr1", kTodo, kTodo, kTodo ], |
|
212 [ 7, "ml_edivbr1", kTodo, kTodo, kTodo ], |
|
213 [ 8, "ml_divbr1", kTodo, kTodo, kTodo ], |
|
214 [ 8, "ml_edivbr1", kTodo, kTodo, kTodo ] ] ], |
|
215 [ 9, 12, "words\n", 13, 19 ], |
|
216 [ 13, 19, "", 19, 19 ] ]); |
|
217 testTextAfterOffset(ids, BOUNDARY_WORD_END, |
|
218 [ [ 0, 7, "\n\ntwo", 7, 12 ], |
|
219 [ 8, 12, " words", 12, 18 ], |
|
220 [ 13, 18, "\n", 18, 19, |
|
221 [ [ 18, "ml_divbr1", kTodo, kTodo, kOk ], |
|
222 [ 18, "ml_edivbr1", kTodo, kTodo, kOk ] ] ], |
|
223 [ 19, 19, "", 19, 19 ] ]); |
|
224 |
|
225 // a <a href="#">b</a> |
|
226 // a * |
|
227 testTextBeforeOffset("cntr_1", BOUNDARY_WORD_START, |
|
228 [ [ 0, 1, "", 0, 0 ], |
|
229 [ 2, 3, "a ", 0, 2 ] ]); |
|
230 |
|
231 testTextAtOffset("cntr_1", BOUNDARY_WORD_START, |
|
232 [ [ 0, 1, "a ", 0, 2 ], |
|
233 [ 2, 3, kEmbedChar, 2, 3 ] ]); |
|
234 testTextAfterOffset("cntr_1", BOUNDARY_WORD_START, |
|
235 [ [ 0, 1, kEmbedChar, 2, 3 ], |
|
236 [ 2, 3, "", 3, 3 ] ]); |
|
237 |
|
238 SimpleTest.finish(); |
|
239 } |
|
240 |
|
241 SimpleTest.waitForExplicitFinish(); |
|
242 addA11yLoadEvent(doTest); |
|
243 </script> |
|
244 </head> |
|
245 <body> |
|
246 |
|
247 <p id="display"></p> |
|
248 <div id="content" style="display: none"></div> |
|
249 <pre id="test"> |
|
250 </pre> |
|
251 |
|
252 <input id="i1" value="hello"/> |
|
253 <div id="d1">hello</div> |
|
254 <div id="e1" contenteditable="true">hello</div> |
|
255 <textarea id="t1">hello</textarea> |
|
256 |
|
257 <input id="i2" value="hello "/> |
|
258 <pre><div id="d2">hello </div></pre> |
|
259 <div id="e2" contenteditable="true">hello </div> |
|
260 <textarea id="t2">hello </textarea> |
|
261 |
|
262 <input id="i6" value="hello all"/> |
|
263 <div id="d6">hello all</div> |
|
264 <div id="e6" contenteditable="true">hello all</div> |
|
265 <textarea id="t6">hello all</textarea> |
|
266 |
|
267 <input id="i7" value="hello my friend"/> |
|
268 <div id="d7">hello my friend</div> |
|
269 <div id="e7" contenteditable="true">hello my friend</div> |
|
270 <textarea id="t7">hello my friend</textarea> |
|
271 |
|
272 <input id="i8" value="Brave Sir Robin ran"/> |
|
273 <pre> |
|
274 <div id="d8">Brave Sir Robin ran</div> |
|
275 <div id="e8" contenteditable="true">Brave Sir Robin ran</div> |
|
276 </pre> |
|
277 <textarea id="t8" cols="300">Brave Sir Robin ran</textarea> |
|
278 |
|
279 <pre> |
|
280 <div id="ml_div1">oneword |
|
281 |
|
282 two words |
|
283 </div> |
|
284 <div id="ml_divbr1">oneword<br/><br/>two words<br/><br/></div> |
|
285 <div id="ml_ediv1" contenteditable="true">oneword |
|
286 |
|
287 two words |
|
288 </div> |
|
289 <div id="ml_edivbr1" contenteditable="true">oneword<br/><br/>two words<br/><br/></div> |
|
290 <textarea id="ml_t1" cols="300">oneword |
|
291 |
|
292 two words |
|
293 </textarea> |
|
294 </pre> |
|
295 |
|
296 <div id="cntr_1">a <a href="#">b</a></div> |
|
297 </body> |
|
298 </html> |