test_words.html (4681B)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>nsIAccessibleText getText related function tests for html:input,html:div and html:textarea</title> 5 <meta charset="utf-8" /> 6 <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" /> 7 8 <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> 9 <script type="application/javascript" 10 src="../common.js"></script> 11 <script type="application/javascript" 12 src="../text.js"></script> 13 <script type="application/javascript"> 14 if (navigator.platform.startsWith("Mac")) { 15 SimpleTest.expectAssertions(0, 1); 16 } else { 17 SimpleTest.expectAssertions(0, 1); 18 } 19 20 async function doTest() { 21 test_common(); 22 for (let newSegmenter of [true, false]) { 23 for (let stopAtPunctuation of [true, false]) { 24 await test_per_segmenter(newSegmenter, stopAtPunctuation); 25 } 26 } 27 SimpleTest.finish(); 28 } 29 30 function test_common() { 31 // "one two" 32 testWords("div1", ["one", "two"]); 33 34 // "one two" 35 testWords("div2", ["one", "two"]); 36 37 // "one,two" 38 testWordCount("div3", 2, kOk); 39 testWordAt("div3", 0, "one", kTodo); 40 testWordAt("div3", 1, "two", kOk); 41 42 // "one, two" 43 testWordCount("div4", 2, kOk); 44 testWordAt("div4", 0, "one", kTodo); 45 testWordAt("div4", 1, "two", kOk); 46 47 // "one+two" 48 testWordCount("div5", 2, kOk); 49 testWordAt("div5", 0, "one", kTodo); 50 testWordAt("div5", 1, "two", kOk); 51 52 // "one+two " 53 testWordCount("div6", 2, kOk); 54 testWordAt("div6", 0, "one", kTodo); 55 testWordAt("div6", 1, "two", kOk); 56 57 // "one\ntwo" 58 testWordCount("div7", 2, kOk); 59 testWordAt("div7", 0, "one", kOk); 60 testWordAt("div7", 1, "two", kTodo); 61 62 // "345" 63 testWords("div9", ["345"]); 64 65 // "3a A4" 66 testWords("div10", ["3a", "A4"]); 67 68 // "カタカナ" 69 testWords("div13", ["カタカナ"], kOk); 70 71 // "3+4*5=23" 72 testWordCount("div16", 4, kOk); 73 testWordAt("div16", 0, "3", kTodo); 74 testWordAt("div16", 1, "4", kTodo); 75 testWordAt("div16", 2, "5", kTodo); 76 testWordAt("div16", 3, "23", kTodo); 77 78 // "Hello. Friend, are you here?!" 79 testWordCount("div17", 5, kOk); 80 testWordAt("div17", 0, "Hello", kTodo); 81 testWordAt("div17", 1, "Friend", kTodo); 82 testWordAt("div17", 2, "are", kOk); 83 testWordAt("div17", 3, "you", kOk); 84 testWordAt("div17", 4, "here", kTodo); 85 86 testWords("input_1", ["foo", "bar"]); 87 } 88 89 async function test_per_segmenter(aNewSegmenter, aStopAtPunctuation) { 90 // If aNewSegmenter is true, use UAX#14/#29 compatible segmenter. 91 await SpecialPowers.pushPrefEnv({"set": [ 92 ["intl.icu4x.segmenter.enabled", aNewSegmenter], 93 ["layout.word_select.stop_at_punctuation", aStopAtPunctuation], 94 ]}); 95 96 // "one.two" 97 if (!aStopAtPunctuation) { 98 testWordCount("div8", 1, kOk); 99 testWordAt("div8", 0, "one.two", kOk); 100 } else { 101 testWordCount("div8", 2, kOk); 102 testWordAt("div8", 0, "one", kTodo); 103 testWordAt("div8", 1, "two", kOk); 104 } 105 106 // "3.1416" 107 testWords("div11", ["3.1416"], !aStopAtPunctuation ? kOk : kTodo); 108 109 // "4,261.01" 110 testWords("div12", ["4,261.01"], !aStopAtPunctuation ? kOk: kTodo); 111 112 // "Peter's car" 113 testWords("div14", ["Peter's", "car"], !aStopAtPunctuation ? kOk : kTodo); 114 115 // "N.A.T.O." 116 testWords("div15", ["N.A.T.O."], !aStopAtPunctuation ? kOk : kTodo); 117 118 await SpecialPowers.popPrefEnv(); 119 } 120 121 SimpleTest.waitForExplicitFinish(); 122 addA11yLoadEvent(doTest); 123 </script> 124 </head> 125 <body> 126 127 <a target="_blank" 128 title="nsIAccessibleText test word boundaries" 129 href="https://bugzilla.mozilla.org/show_bug.cgi?id=452769">Mozilla Bug 452769</a> 130 <p id="display"></p> 131 <div id="content" style="display: none"></div> 132 <pre id="test"> 133 <div id="div1">one two</div> 134 <div id="div2">one two</div> 135 <div id="div3">one,two</div> 136 <div id="div4">one, two</div> 137 <div id="div5">one+two</div> 138 <div id="div6">one+two </div> 139 <div id="div7">one<br/>two</div> 140 <div id="div8">one.two</div> 141 <div id="div9">345</div> 142 <div id="div10">3a A4</div> 143 <div id="div11">3.1416</div> 144 <div id="div12">4,261.01</div> 145 <div id="div13">カタカナ</div> 146 <div id="div14">Peter's car</div> 147 <div id="div15">N.A.T.O.</div> 148 <div id="div16">3+4*5=23</div> 149 <div id="div17">Hello. Friend, are you here?!</div> 150 </pre> 151 <input id="input_1" type="text" value="foo bar" placeholder="something or other"> 152 153 </body> 154 </html>