1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/accessible/tests/mochitest/text/test_wordboundary.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,298 @@ 1.4 +<!DOCTYPE html> 1.5 +<html> 1.6 +<head> 1.7 + <title>Word boundary text tests</title> 1.8 + <link rel="stylesheet" type="text/css" 1.9 + href="chrome://mochikit/content/tests/SimpleTest/test.css" /> 1.10 + 1.11 + <script type="application/javascript" 1.12 + src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> 1.13 + <script type="application/javascript" 1.14 + src="../common.js"></script> 1.15 + <script type="application/javascript" 1.16 + src="../text.js"></script> 1.17 + 1.18 + <script type="application/javascript"> 1.19 + function doTest() 1.20 + { 1.21 + // "hello" 1.22 + // __h__e__l__l__o__ 1.23 + // 0 1 2 3 4 5 1.24 + var ids = [ "i1", "d1", "e1", "t1" ]; 1.25 + testTextBeforeOffset(ids, BOUNDARY_WORD_START, 1.26 + [ [ 0, 5, "", 0, 0 ] ]); 1.27 + testTextBeforeOffset(ids, BOUNDARY_WORD_END, 1.28 + [ [ 0, 5, "", 0, 0 ] ]); 1.29 + 1.30 + testTextAtOffset(ids, BOUNDARY_WORD_START, 1.31 + [ [ 0, 5, "hello", 0, 5 ] ]); 1.32 + testTextAtOffset(ids, BOUNDARY_WORD_END, 1.33 + [ [ 0, 5, "hello", 0, 5 ] ]); 1.34 + 1.35 + testTextAfterOffset(ids, BOUNDARY_WORD_START, 1.36 + [ [ 0, 5, "", 5, 5 ] ]); 1.37 + testTextAfterOffset(ids, BOUNDARY_WORD_END, 1.38 + [ [ 0, 5, "", 5, 5 ] ]); 1.39 + 1.40 + // "hello " 1.41 + // __h__e__l__l__o__ __ 1.42 + // 0 1 2 3 4 5 6 1.43 + var ids = [ "i2", "d2", "e2", "t2" ]; 1.44 + testTextBeforeOffset(ids, BOUNDARY_WORD_START, 1.45 + [ [ 0, 6, "", 0, 0 ] ]); 1.46 + testTextBeforeOffset(ids, BOUNDARY_WORD_END, 1.47 + [ [ 0, 5, "", 0, 0 ], 1.48 + [ 6, 6, "hello", 0, 5, 1.49 + [ [6, "e2", kTodo, kOk, kTodo ] ] 1.50 + ] 1.51 + ]); 1.52 + 1.53 + testTextAtOffset(ids, BOUNDARY_WORD_START, 1.54 + [ [ 0, 6, "hello ", 0, 6 ] ]); 1.55 + testTextAtOffset(ids, BOUNDARY_WORD_END, 1.56 + [ [ 0, 4, "hello", 0, 5 ], 1.57 + [ 5, 6, " ", 5, 6, 1.58 + [ [ 5, "e2", kTodo, kTodo, kOk ], 1.59 + [ 6, "e2", kTodo, kTodo, kOk ] ] 1.60 + ] 1.61 + ]); 1.62 + 1.63 + testTextAfterOffset(ids, BOUNDARY_WORD_START, 1.64 + [ [ 0, 6, "", 6, 6 ] ]); 1.65 + testTextAfterOffset(ids, BOUNDARY_WORD_END, 1.66 + [ [ 0, 5, " ", 5, 6, 1.67 + [ [ 5, "e2", kTodo, kTodo, kOk ] ] 1.68 + ], 1.69 + [ 6, 6, "", 6, 6 ] 1.70 + ]); 1.71 + 1.72 + // "hello all" 1.73 + // __h__e__l__l__o__ __a__l__l__ 1.74 + // 0 1 2 3 4 5 6 7 8 9 1.75 + ids = [ "i6", "d6", "e6", "t6" ]; 1.76 + testTextBeforeOffset(ids, BOUNDARY_WORD_START, 1.77 + [ [ 0, 5, "", 0, 0 ], 1.78 + [ 6, 9, "hello ", 0, 6 ]]); 1.79 + testTextBeforeOffset(ids, BOUNDARY_WORD_END, 1.80 + [ [ 0, 5, "", 0, 0 ], 1.81 + [ 6, 9, "hello", 0, 5 ] ]); 1.82 + 1.83 + testTextAtOffset(ids, BOUNDARY_WORD_START, 1.84 + [ [ 0, 5, "hello ", 0, 6 ], 1.85 + [ 6, 9, "all", 6, 9 ] ]); 1.86 + testTextAtOffset(ids, BOUNDARY_WORD_END, 1.87 + [ [ 0, 4, "hello", 0, 5 ], 1.88 + [ 5, 9, " all", 5, 9 ] ]); 1.89 + 1.90 + testTextAfterOffset(ids, BOUNDARY_WORD_START, 1.91 + [ [ 0, 5, "all", 6, 9 ], 1.92 + [ 6, 9, "", 9, 9 ] ]); 1.93 + testTextAfterOffset(ids, BOUNDARY_WORD_END, 1.94 + [ [ 0, 5, " all", 5, 9 ], 1.95 + [ 6, 9, "", 9, 9 ] ]); 1.96 + 1.97 + // "hello my friend" 1.98 + // __h__e__l__l__o__ __m__y__ __f__r__i__e__n__d__ 1.99 + // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1.100 + ids = [ "i7", "d7", "e7", "t7" ]; 1.101 + testTextBeforeOffset(ids, BOUNDARY_WORD_START, 1.102 + [ [ 0, 5, "", 0, 0 ], 1.103 + [ 6, 8, "hello ", 0, 6 ], 1.104 + [ 9, 15, "my ", 6, 9 ] ]); 1.105 + testTextBeforeOffset(ids, BOUNDARY_WORD_END, 1.106 + [ [ 0, 5, "", 0, 0 ], 1.107 + [ 6, 8, "hello", 0, 5 ], 1.108 + [ 9, 15, " my", 5, 8 ] ]); 1.109 + 1.110 + testTextAtOffset(ids, BOUNDARY_WORD_START, 1.111 + [ [ 0, 5, "hello ", 0, 6 ], 1.112 + [ 6, 8, "my ", 6, 9 ], 1.113 + [ 9, 15, "friend", 9, 15] ]); 1.114 + testTextAtOffset(ids, BOUNDARY_WORD_END, 1.115 + [ [ 0, 4, "hello", 0, 5 ], 1.116 + [ 5, 7, " my", 5, 8 ], 1.117 + [ 8, 15, " friend", 8, 15] ]); 1.118 + 1.119 + testTextAfterOffset(ids, BOUNDARY_WORD_START, 1.120 + [ [ 0, 5, "my ", 6, 9 ], 1.121 + [ 6, 8, "friend", 9, 15 ], 1.122 + [ 9, 15, "", 15, 15 ] ]); 1.123 + testTextAfterOffset(ids, BOUNDARY_WORD_END, 1.124 + [ [ 0, 5, " my", 5, 8 ], 1.125 + [ 6, 8, " friend", 8, 15 ], 1.126 + [ 9, 15, "", 15, 15 ] ]); 1.127 + 1.128 + // "Brave Sir Robin ran" 1.129 + // __B__r__a__v__e__ __S__i__r__ __ __R__o__b__i__n__ __ __ __r__a__n__ 1.130 + // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1.131 + ids = [ "i8", "d8", "e8", "t8" ]; 1.132 + testTextBeforeOffset(ids, BOUNDARY_WORD_START, 1.133 + [ [ 0, 5, "", 0, 0 ], 1.134 + [ 6, 10, "Brave ", 0, 6 ], 1.135 + [ 11, 18, "Sir ", 6, 11 ], 1.136 + [ 19, 22, "Robin ", 11, 19 ] ]); 1.137 + testTextBeforeOffset(ids, BOUNDARY_WORD_END, 1.138 + [ [ 0, 5, "", 0, 0 ], 1.139 + [ 6, 9, "Brave", 0, 5 ], 1.140 + [ 10, 16, " Sir", 5, 9 ], 1.141 + [ 17, 22, " Robin", 9, 16 ] ]); 1.142 + 1.143 + testTextAtOffset(ids, BOUNDARY_WORD_START, 1.144 + [ [ 0, 5, "Brave ", 0, 6 ], 1.145 + [ 6, 10, "Sir ", 6, 11 ], 1.146 + [ 11, 18, "Robin ", 11, 19 ], 1.147 + [ 19, 22, "ran", 19, 22 ] ]); 1.148 + testTextAtOffset(ids, BOUNDARY_WORD_END, 1.149 + [ [ 0, 4, "Brave", 0, 5 ], 1.150 + [ 5, 8, " Sir", 5, 9 ], 1.151 + [ 9, 15, " Robin", 9, 16 ], 1.152 + [ 16, 22, " ran", 16, 22 ] ]); 1.153 + 1.154 + testTextAfterOffset(ids, BOUNDARY_WORD_START, 1.155 + [ [ 0, 5, "Sir ", 6, 11 ], 1.156 + [ 6, 10, "Robin ", 11, 19 ], 1.157 + [ 11, 18, "ran", 19, 22 ], 1.158 + [ 19, 22, "", 22, 22 ] ]); 1.159 + testTextAfterOffset(ids, BOUNDARY_WORD_END, 1.160 + [ [ 0, 5, " Sir", 5, 9 ], 1.161 + [ 6, 9, " Robin", 9, 16 ], 1.162 + [ 10, 16, " ran", 16, 22 ], 1.163 + [ 17, 22, "", 22, 22 ] ]); 1.164 + 1.165 + // 'oneword 1.166 + // ' 1.167 + // 'two words 1.168 + // ' 1.169 + // __o__n__e__w__o__r__d__\n 1.170 + // 0 1 2 3 4 5 6 7 1.171 + // __\n 1.172 + // 8 1.173 + // __t__w__o__ __w__o__r__d__s__\n__ 1.174 + // 9 10 11 12 13 14 15 16 17 18 19 1.175 + 1.176 + ids = ["ml_div1", "ml_divbr1", "ml_ediv1", "ml_edivbr1", "ml_t1"]; 1.177 + testTextBeforeOffset(ids, BOUNDARY_WORD_START, 1.178 + [ [ 0, 8, "", 0, 0 ], 1.179 + [ 9, 12, "oneword\n\n", 0, 9 ], 1.180 + [ 13, 19, "two ", 9, 13 ] ]); 1.181 + testTextBeforeOffset(ids, BOUNDARY_WORD_END, 1.182 + [ [ 0, 7, "", 0, 0 ], 1.183 + [ 8, 12, "oneword", 0, 7, 1.184 + [ [ 8, "ml_divbr1", kTodo, kOk, kTodo ], 1.185 + [ 8, "ml_edivbr1", kTodo, kOk, kTodo ], 1.186 + [ 9, "ml_divbr1", kTodo, kOk, kTodo ], 1.187 + [ 9, "ml_edivbr1", kTodo, kOk, kTodo ] ] ], 1.188 + [ 13, 18, "\n\ntwo", 7, 12 ], 1.189 + [ 19, 19, " words", 12, 18, 1.190 + [ [ 19, "ml_divbr1", kTodo, kTodo, kTodo, ], 1.191 + [ 19, "ml_edivbr1", kTodo, kTodo, kTodo, ] ] ] 1.192 + ] ); 1.193 + 1.194 + testTextAtOffset(ids, BOUNDARY_WORD_START, 1.195 + [ [ 0, 8, "oneword\n\n", 0, 9, 1.196 + [ [ 7, "ml_divbr1", kTodo, kTodo, kTodo ], 1.197 + [ 7, "ml_edivbr1", kTodo, kTodo, kTodo ], 1.198 + [ 8, "ml_divbr1", kTodo, kTodo, kTodo ], 1.199 + [ 8, "ml_edivbr1", kTodo, kTodo, kTodo ] ] ], 1.200 + [ 9, 12, "two ", 9, 13 ], 1.201 + [ 13, 19, "words\n", 13, 19 ] ]); 1.202 + testTextAtOffset(ids, BOUNDARY_WORD_END, 1.203 + [ [ 0, 6, "oneword", 0, 7 ], 1.204 + [ 7, 11, "\n\ntwo", 7, 12 ], 1.205 + [ 12, 17, " words", 12, 18 ], 1.206 + [ 18, 19, "\n", 18, 19, 1.207 + [ [ 18, "ml_divbr1", kTodo, kTodo, kOk ], 1.208 + [ 18, "ml_edivbr1", kTodo, kTodo, kOk ], 1.209 + [ 19, "ml_divbr1", kTodo, kTodo, kOk ], 1.210 + [ 19, "ml_edivbr1", kTodo, kTodo, kOk ] ] ] ]); 1.211 + 1.212 + testTextAfterOffset(ids, BOUNDARY_WORD_START, 1.213 + [ [ 0, 8, "two ", 9, 13, 1.214 + [ [ 7, "ml_divbr1", kTodo, kTodo, kTodo ], 1.215 + [ 7, "ml_edivbr1", kTodo, kTodo, kTodo ], 1.216 + [ 8, "ml_divbr1", kTodo, kTodo, kTodo ], 1.217 + [ 8, "ml_edivbr1", kTodo, kTodo, kTodo ] ] ], 1.218 + [ 9, 12, "words\n", 13, 19 ], 1.219 + [ 13, 19, "", 19, 19 ] ]); 1.220 + testTextAfterOffset(ids, BOUNDARY_WORD_END, 1.221 + [ [ 0, 7, "\n\ntwo", 7, 12 ], 1.222 + [ 8, 12, " words", 12, 18 ], 1.223 + [ 13, 18, "\n", 18, 19, 1.224 + [ [ 18, "ml_divbr1", kTodo, kTodo, kOk ], 1.225 + [ 18, "ml_edivbr1", kTodo, kTodo, kOk ] ] ], 1.226 + [ 19, 19, "", 19, 19 ] ]); 1.227 + 1.228 + // a <a href="#">b</a> 1.229 + // a * 1.230 + testTextBeforeOffset("cntr_1", BOUNDARY_WORD_START, 1.231 + [ [ 0, 1, "", 0, 0 ], 1.232 + [ 2, 3, "a ", 0, 2 ] ]); 1.233 + 1.234 + testTextAtOffset("cntr_1", BOUNDARY_WORD_START, 1.235 + [ [ 0, 1, "a ", 0, 2 ], 1.236 + [ 2, 3, kEmbedChar, 2, 3 ] ]); 1.237 + testTextAfterOffset("cntr_1", BOUNDARY_WORD_START, 1.238 + [ [ 0, 1, kEmbedChar, 2, 3 ], 1.239 + [ 2, 3, "", 3, 3 ] ]); 1.240 + 1.241 + SimpleTest.finish(); 1.242 + } 1.243 + 1.244 + SimpleTest.waitForExplicitFinish(); 1.245 + addA11yLoadEvent(doTest); 1.246 + </script> 1.247 +</head> 1.248 +<body> 1.249 + 1.250 + <p id="display"></p> 1.251 + <div id="content" style="display: none"></div> 1.252 + <pre id="test"> 1.253 + </pre> 1.254 + 1.255 + <input id="i1" value="hello"/> 1.256 + <div id="d1">hello</div> 1.257 + <div id="e1" contenteditable="true">hello</div> 1.258 + <textarea id="t1">hello</textarea> 1.259 + 1.260 + <input id="i2" value="hello "/> 1.261 + <pre><div id="d2">hello </div></pre> 1.262 + <div id="e2" contenteditable="true">hello </div> 1.263 + <textarea id="t2">hello </textarea> 1.264 + 1.265 + <input id="i6" value="hello all"/> 1.266 + <div id="d6">hello all</div> 1.267 + <div id="e6" contenteditable="true">hello all</div> 1.268 + <textarea id="t6">hello all</textarea> 1.269 + 1.270 + <input id="i7" value="hello my friend"/> 1.271 + <div id="d7">hello my friend</div> 1.272 + <div id="e7" contenteditable="true">hello my friend</div> 1.273 + <textarea id="t7">hello my friend</textarea> 1.274 + 1.275 + <input id="i8" value="Brave Sir Robin ran"/> 1.276 + <pre> 1.277 + <div id="d8">Brave Sir Robin ran</div> 1.278 + <div id="e8" contenteditable="true">Brave Sir Robin ran</div> 1.279 + </pre> 1.280 + <textarea id="t8" cols="300">Brave Sir Robin ran</textarea> 1.281 + 1.282 + <pre> 1.283 +<div id="ml_div1">oneword 1.284 + 1.285 +two words 1.286 +</div> 1.287 +<div id="ml_divbr1">oneword<br/><br/>two words<br/><br/></div> 1.288 +<div id="ml_ediv1" contenteditable="true">oneword 1.289 + 1.290 +two words 1.291 +</div> 1.292 +<div id="ml_edivbr1" contenteditable="true">oneword<br/><br/>two words<br/><br/></div> 1.293 +<textarea id="ml_t1" cols="300">oneword 1.294 + 1.295 +two words 1.296 +</textarea> 1.297 + </pre> 1.298 + 1.299 + <div id="cntr_1">a <a href="#">b</a></div> 1.300 +</body> 1.301 +</html>